MongoDB——高级

索引

  • 创建索引格式

    db.COLLECTION_NAME.ensureIndex(keys[,options])
        keys,要建立索引的参数列表。如:{KEY:1},其中key表示字段名,1表示升序排序,也可使用使用数字-1降序。
        options,可选参数,表示建立索引的设置。可选值如下:
            backgroundBoolean,在后台建立索引,以便建立索引时不阻止其他数据库活动。默认值 false
            uniqueBoolean,创建唯一索引。默认值 false
            nameString,指定索引的名称。如果未指定,MongoDB会生成一个索引字段的名称和排序顺序串联。
            dropDupsBoolean,创建唯一索引时,如果出现重复删除后续出现的相同索引,只保留第一个。
            sparseBoolean,对文档中不存在的字段数据不启用索引。默认值是 false
            vindex version,索引的版本号。
            weightsdocument,索引权重值,数值在 1  99,999 之间,表示该索引相对于其他索引字段的得分权重。
    
  • 创建索引

    • 单一索引
      db.person.ensureIndex({age:1})
      
    • 复合索引
      db.person.ensureIndex({name:1,age:1})
      
    • 唯一索引
      db.person.ensureIndex({score:1},{unique:true})
      
    • 给索引命名
      db.person.ensureIndex({age:1},{name:'age_index'})
      
  • 管理索引

    • 查看索引

      • 查看指定集合索引
        db.person.getIndexes()
        
      • 查看当前数据库所有集合的索引
        db.system.indexes.find()
        
      • 查看指定集合索引大小
        db.person.totalIndexSize()
        
    • 重建索引

      db.person.reIndex()
      
    • 删除索引

      • 删除指定索引
        db.person.dropIndex("name_1_age_1")
        
        db.runCommand({"dropIndexes":"person","index":"age_1"})
        
      • 删除全部索引
        db.person.dropIndexes()
        
  • 查询分析

    db.person.find({age:13}).explain()
    

用户管理

  • 查看当前已有用户
    show users
     
    db.system.users.find()
    
  • 创建用户
    • 创建admin数据库的用户
      db.createUser( 
        { 
          user: "root", 
          pwd: "cluster", 
          roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] 
        } 
      )
      
    • 创建accountAdmin01用户并授权两个数据库的操作权限
      db.createUser({ 
      	user: "test",
      	pwd: "test",
      	roles: [ { role: "readWrite", db: "test" },"readAnyDatabase"],
      	authenticationRestrictions: [ {
              clientSource: ["192.0.2.0"], //允许连接数据库的客户端IP
              serverAddress: ["198.51.100.0"] //服务端IP
           } ]
        })
      
  • 参数说明:
    user :用户名
    pwd:密码
    roles
    role:用户角色
    	a. Read:允许用户读取指定数据库
    	b. readWrite:允许用户读写指定数据库
    	c. dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
    	d. userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
    	e. clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
    	f. readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
    	g. readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
    	h. userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
    	i. dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
    	j. root:只在admin数据库中可用。超级账号,超级权限
    
    db:操作的数据库名
    
  • 修改mongod配置文件、重启mongod服务
    auth=true
    
  • 切换用户
    db.auth('root','cluster')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值