mongodb索引

编程入门 行业动态 更新时间:2024-10-27 06:19:04

单键索引(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

本文发布于:2023-05-31 12:02:33,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/391380.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:索引   mongodb

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!