Mongodb
Mongodb入门系列
Mongodb字典
Mongodb安装部署
Mongodb单点部署
Mongodb集群部署
Mongodb集群调研
Mongodb原理说明
Mongodb服务维护
Mongodb安全防护
Mongodb配置管理
Mongodb_SQL语句
Mongodb索引操作
Mongodb增删改查操作
Mongodb新闻
Mongodb使用案例
本文档使用 MrDoc 发布
-
+
home page
Mongodb索引操作
[TOC] ## 一.简介 数据库的索引类似书籍的目录索引一样,有了索引,看书的时候就不用翻遍整本书,就可以根据目录页数直接跳转到目标内容,提高阅读和查询效率。数据库的索引也是如此,它的作用就是用来提升查询速度的,有了索引,MongoDB查询的时候就可以索引中找到条目后,直接跳转到目标collection的位置。 ## 二.默认索引 检索系统索引时,可以发现,mongodb默认的为每个集合都建立了默认的"_id"索引,作为检索时参照的索引。即我们平时的find操作都是默认根据"_id"这个索引来查找的 ```python > db.system.indexes.find(); { "v" : 1, "key" : { "_id" : 1 }, "ns" : "kaiye.c1", "name" : "_id_" } { "v" : 1, "key" : { "_id" : 1 }, "ns" : "kaiye.c2", "name" : "_id_" } { "v" : 1, "key" : { "_id" : 1 }, "ns" : "kaiye.c3", "name" : "_id_" } ``` ## 三.为什么要建自定义索引 先往一集合c4中添加一百万条数据,后检索age=100的那条数据,并调用explain函数计算检索过程中信息,发现在无排序,无自定义索引的情况下,没查询一条数据,需要扫描一百万条数据,并且只是一个简单查询就耗费了546毫秒,这在大数据量的业务系统中是难以接受的。 ```python for(var i=0;i<1000000;i++){ db.c4.insert({name:"diao",age:i}) } ```  ## 四.自定义索引有无的对比 首先为c4集合的name字段建立索引,关键字为ensureIndex,语法为db.c4.ensureIndex({age:1}),之后再执行查询age=100的操作,检索信息如下图 此时可以发现,在为age字段建立索引后进行一次简单的查询,此时遍历的条数只有一条,并且耗时几乎为0,相比无索引的检索,效果可见一般。  ## 五.对索引的其他操作 1.查询索引的相关信息 `db.集合.stats();` 2.删除索引,删除集合,也会将集合中的索引全部删除 `db.集合.dropIndex({索引字段:1})` 3.建立唯一索引:唯一索引的意思是,当某一字段被设置为唯一索引后,该字段在所在集合中,不允许有相同的值存在,即值是唯一的,比如以上案例,再插入age=100的一条文档,则会有报错信息出来了。 `db.集合.ensureIndex({age:1},{unique:true})`
日行一善
Dec. 10, 2020, 3:46 p.m.
Share documents
Collection documents
Last
Next
Scan wechat
Copy link
Scan your mobile phone to share
Copy link
关于 MrDoc
觅思文档MrDoc
是
州的先生
开发并开源的在线文档系统,其适合作为个人和小型团队的云笔记、文档和知识库管理工具。
如果觅思文档给你或你的团队带来了帮助,欢迎对作者进行一些打赏捐助,这将有力支持作者持续投入精力更新和维护觅思文档,感谢你的捐助!
>>>捐助鸣谢列表
微信
支付宝
QQ
PayPal
QQ粉丝交流群:882382311
Markdown文件
share
link
type
password
Update password