本文主要是介绍mongodb索引---单键索引,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
单键索引(Single Field Indexes)顾名思义就是单个字段作为索引列,mongoDB的所有collection默认都有一个单键索引_id,我们也可以对一些经常作为过滤条件的字段设置索引,如给age字段添加一个索引,语法十分简单:
//给age字段添加升序索引
db.userinfos.createIndex({age:1})
其中{age:1}中的1表示升序,如果想设置倒序索引的话使用 db.userinfos.createIndex({age:-1}) 即可。我们通过explain()方法查看查询计划,如下图,看到查询age=23的document时使用了索引,stage=IXSCAN,如果没有使用索引的话stage=COLLSCAN
1 准备测试数据
db.userinfos.insertMany([{_id:1, name: "张三", age: 23,level:10, ename: { firstname: "san", lastname: "zhang"}, roles: ["vip","gen" ]},{_id:2, name: "李四", age: 24,level:20, ename: { firstname: "si", lastname: "li"}, roles:[ "vip" ]},{_id:3, name: "王五", age: 25,level:30, ename: { firstname: "wu", lastname: "wang"}, roles: ["gen","vip" ]},{_id:4, name: "赵六", age: 26,level:40, ename: { firstname: "liu", lastname: "zhao"}, roles: ["gen"] },{_id:5, name: "田七", age: 27, ename: { firstname: "qi", lastname: "tian"}, address:'北京' },{_id:6, name: "周八", age: 28,roles:["gen"], address:'上海' }
]);
2 新建索引,用explain查看执行计划
//创建索引,值1表示正序排序,-1表示倒序排序
db.userinfos.createIndex({ age: 1 })
db.userinfos.createIndex({ name: 1 })//查看userinfos中的所有索引
db.userinfos.getIndexes()//删除特定一个索引
db.userinfos.dropIndex({ name: 1 })
db.userinfos.dropIndex({ age: 1 })//删除所有的索引(主键索引_id不会被删除)
db.userinfos.dropIndexes()//测试索引
db.userinfos.find({ age: 23 }).explain()
3 因为document的存储是bson格式的,我们也可以给内置对象的字段添加索引,或者将整个内置对象作为一个索引,语法如下
//1.内嵌对象的某一字段作为索引
//在ename.firstname字段上添加索引
db.userinfos.createIndex({ "ename.firstname": 1 })//使用ename.firstname字段的索引查询
db.userinfos.find({ "ename.firstname": "san" }).explain()//2.整个内嵌对象作为索引
//给整个ename字段添加索引,查询怎样能用到索引,还不知道,后续补充????
db.userinfos.createIndex({ "ename": 1 })//删除索引
db.userinfos.dropIndex({ "ename.firstname": 1 })
这篇关于mongodb索引---单键索引的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!