索引
创建索引格式
db.COLLECTION_NAME.ensureIndex(keys[,options]) keys,要建立索引的参数列表。如:{KEY:1},其中key表示字段名,1表示升序排序,也可使用使用数字-1降序。 options,可选参数,表示建立索引的设置。可选值如下: background,Boolean,在后台建立索引,以便建立索引时不阻止其他数据库活动。默认值 false。 unique,Boolean,创建唯一索引。默认值 false。 name,String,指定索引的名称。如果未指定,MongoDB会生成一个索引字段的名称和排序顺序串联。 dropDups,Boolean,创建唯一索引时,如果出现重复删除后续出现的相同索引,只保留第一个。 sparse,Boolean,对文档中不存在的字段数据不启用索引。默认值是 false。 v,index version,索引的版本号。 weights,document,索引权重值,数值在 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 } ] })
- 创建admin数据库的用户
- 参数说明:
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')