zoukankan      html  css  js  c++  java
  • MongoDB 入门

     
    特点:
    面向文档;
    使用MongoDB传输协议作为与服务器交互的主要方式;
    默认存储引擎使用了“内存映射文件”;
    动态查询优化器缓存最高效的查询方式;
     

    停止Mongod
    mongod  --shutdown  --dbpath /mongodb_data
     
    开机启动
    @centos
    vim /etc/rc.local
    /usr/local/mongodb/bin/mongod --dbpath /mongodb_data --auth --logpath /data/mongodb/log.log
     
     

    瞬间完成
     
    插入/删除/更新文档均是“瞬间完成”的——即Client只关心发送数据,而不用关心Server到底是否成功存储;
    瞬间完成并不是异步,而是不需要知道服务器的响应;
    可以通过getLastError检查是否成功;
     

    用户
     
    默认情况下,shell登录没有开启安全认证;
    开启安全认证:--auth 选项加上;注!开启安全认证之前要加上一个root用户。
     
    // 绑定ip和端口
    --bind_ip 127.0.0.1
    --port28888
     
     
    每个数据库可以有多个用户,登录认证后以超级用户的身份处理数据;
     
    // 添加管理员
    >use admin
    >db.addUser("root","123456"/*密码*/);
    >use test
    >db.addUser("myuser","123456");
    >db.addUser("myuser","123456",true/*是否是只读*/);
     
    登录认证
    >use admin
    >db.auth("root","12345")
     


    数据库
     
    多个集合组成数据库;
    不同的数据库放在不用的磁盘文件上;
    数据库名应该小写,不包含空字符串和空格、.、/、\、\0
    系统数据库:admin,local,config;
     
    相关命令:
    show dbs 显示所有数据库
    use test 切换到test库;
    show collections 显示当前库下的集合;
    db.users.find() 在当前库的users集合中返回所有结果;
    创建数据库:use dazaza 如果数据库dazaza不存在就会创建;
     
    删除当前数据库
    >db.dropDatabase()
     

    集合 —— 相当于“表”
     
    集合就是一组文档,{"key1":1,"key2":"hello"}{"key3":"hello"};
    集合名称不能是空字符串,不能含有\0,不能以“system.”开头,不能包含$;
    父子集合一般用.分割,如blog.posts,blog.authors;
     
    use dazaza
    show collections
    db.users.find()
     
    删除集合
    >db.users.drop()  // -> true/false
     

    文档 —— 相当于“行”
     
    <Key,Value>对有序地放置在一起就是“文档”,形如{"k1":"v1","k2":"v2"};
    文档的键是有序的;
    键是字符串,值是字符串/int等类型;
    “_”开头的键是保留的;
    区分大小写和类型;
    不能有重复键;
     
    插入文档
    > db.users.insert({...})
     
    删除文档
    > db.users.remove() // 删除集合users所有文档
    > db.users.remove({"name":"cacard"}) // 条件删除
     

    查询
     
    find({查询参数},{返回字段列表,比如name:1,age:1})
     
    >db.xxx.find() // 返回集合xxx所有
    >db.xxx.find({"a":"1","b":"2"}) // 条件查询 AND 关系
     
    >db.users.find().count()
    >db.users.find().limit(2)
    >db.users.find().skip(2)
    >>db.users.find().skip(2).limit(2) 
    >db.users.find().sort()
    >db.users.find().sort('id':-1) 按id到排序
    >db.users.distinct('name',{'id':{$lt:20}} select distinct (name) from users where id <20
     
    db.test.remove({'age':{$lt:20}})  <==> elete test where age<20
    lte <=
    gt >
    gte>=
    ne !=
     

    更新
     
    update(query,updateObject)
     
    更新整个文档
    >db.users.update({...query...},{...new doc...})l
     
    使用 set 更新特定字段
    >db.users.update({'name':'cacard'},{'$set':{'age':'28'}},upsert=true/*有就更新,无则插入*/,multi=false)
    参数依次为:查询条件/更新的字段/不存在是否插入/是否修改多条记录
     
    修改符
    $inc/$push
    db.unicorns.update({name: 'Aurora'}, {$push: {loves: 'sugar'}})
     
  • 相关阅读:
    [转]Java compiler level does not match解决方法
    Ubuntu使用MyEclipse闪退的解决办法
    支付宝AR红包引出Python中的PIL小试
    Neural Style学习3——操作
    Neural Style学习2——环境安装
    Neural Style学习1——简介
    mac下需要安装旧 Java SE 6 才能打开程序解决办法
    Linux system 函数的一些注意事项
    关于在android 4.2.2 上运行runlmbench
    linux kernel 字符设备详解
  • 原文地址:https://www.cnblogs.com/caca/p/mongodb_basic.html
Copyright © 2011-2022 走看看