mongodb使用总结

  1. 创建用户、修改用户
    1. #root:只在admin数据库中可用。超级账号,超级权限。
      #第一步创建超级管理员
      mongo --host 192.168.31.210 --port 27017
      use admin
      db.createUser({user:"root",pwd:"123456",roles:[{role:"root",db:"admin"}]})
      
      #test用户可以操作test数据库,可读写,可以执行数据库管理命令
      db.createUser( {
          user: "test",
          pwd: "123456",
          roles: [ { role: "dbAdmin", db: "test" },{ role: "readWrite", db: "test" } ]
        })
      
      #可以修改test用户的角色
      db.updateUser( "test", {
        roles : [
           { role: "dbAdmin", db: "test" },{ role: "readWrite", db: "test" }
        ]
      })
      

       

    2. 可用角色列表

      read:允许用户读取指定数据库
      readWrite:允许用户读写指定数据库
      dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
      userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
      clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
      readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
      readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
      userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
      dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
      root:只在admin数据库中可用。超级账号,超级权限。

       

       

  2. 常用命令
    
    mongo --host 192.168.31.210 --port 27017
    use test
    
    db.auth("test","123456")
    
    
    
    块(chunk)
    在一个shard server内部,MongoDB还是会把数据分为chunks,每个chunk代表这个shard server内部一部分数据,每个chunk的大小默认是64MB。
    # 设置块大小为64M,默认是64M,可以根据实际情况进行调整
    db.setting.save({"_id":"chunksize","value":64})
    
    
    
    chunk的产生,会有以下两个用途:
    	Splitting(切分)
    	当一个chunk的大小超过配置中的chunk size时,MongDB的后台进程会把这个chunk切分成更小的chunk,从而避免chunk过大的情况
    
    	Balancing(均衡)
    	在MongoDB中,balancer是一个后台进程,负责chunk的迁移,从而均衡各个shard server的负载
    
    
    
    
    
    #分片操作
    sh.enableSharding("test")
    sh.shardCollection("test.basedata.gaode.openlrorigin.flat",{"id":"hashed"}) 
    
    #如果添加的是副本分片,函数结构:
    db.runCommand({addshard:"副本集名称/服务器地址:端口号"})
    #移除
    db.runCommand({"removeshard":"服务器地址:端口号"})
    
    
    #开启数据库分片功能,命令很简单 enablesharding(),这里我就开启copp数据库
    db.runCommand({enablesharding:"test"})  #开启copp数据库分片
    
    #指定集合中分片的片键,这里我就指定为userInfo.userName,即userInfo集合中的userName字段。
    db.runCommand({shardcollection:"test.userInfo",key:{"userName":1}})
    函数结构:
    db.runCommand({shardcollection:"数据库名称.集合名称 ",key:{"字段名称":1}})
    
    
    
    数据插入
    
    for(vari=0;i<100000;i++){db.userInfo.insert({"userName":"user"+i,"depart":"towngas","userNo":"no."+i})}
    
    插入数据成功后,会返回提示信息:WriteResult({“nInserted”:1})
    
    
    
    #查看数据库占用空间
    show dbs
    
    #查看集合
    show collections
    
    #查看记录条数
    db.userInfo.count()
    
    #查询记录
    db.userInfo.find()
    
    
    #打印数据库分片信息
    
    #查看所有分片服务器,必须进入到admin数据库下。
    db.runCommand({"listShards":1})
    
    #查看分片信息
    sh.status()
    
    

     

  3. 索引操作
    #创建索引 Key 值为你要创建的索引字段,1 为指定按升序创建索引,如果你想按降序来创建索引指定为 -1 即可。
    db.collection.createIndex(keys, options)
    db.col.createIndex({"title":1})
    db.col.createIndex({"title":1,"description":-1})
    db.values.createIndex({open: 1, close: 1}, {background: true})
    
    ParameterTypeDescription
    backgroundBoolean建索引过程会阻塞其它数据库操作,background可指定以后台方式创建索引,即增加 "background" 可选参数。 "background" 默认值为false
    uniqueBoolean建立的索引是否唯一。指定为true创建唯一索引。默认值为false.
    namestring索引的名称。如果未指定,MongoDB的通过连接索引的字段名和排序顺序生成一个索引名称。
    dropDupsBoolean3.0+版本已废弃。在建立唯一索引时是否删除重复记录,指定 true 创建唯一索引。默认值为 false.
    sparseBoolean对文档中不存在的字段数据不启用索引;这个参数需要特别注意,如果设置为true的话,在索引字段中不会查询出不包含对应字段的文档.。默认值为 false.
    expireAfterSecondsinteger指定一个以秒为单位的数值,完成 TTL设定,设定集合的生存时间。
    vindex version索引的版本号。默认的索引版本取决于mongod创建索引时运行的版本。
    weightsdocument索引权重值,数值在 1 到 99,999 之间,表示该索引相对于其他索引字段的得分权重。
    default_languagestring对于文本索引,该参数决定了停用词及词干和词器的规则的列表。 默认为英语
    language_overridestring对于文本索引,该参数指定了包含在文档中的字段名,语言覆盖默认的language,默认值为 language.
  4. xxxx
  5. xx
  6. xxxx
  7. xxxx

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值