Mongodb的索引

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mongodb的索引相关的知识,希望对你有一定的参考价值。

1. 简单介绍


索引是为了加速查询。

假设没有索引,mongodb在查询时会做表扫描,假设集合非常大时。这个查询会非常慢。
一般对创建查询时的键都建立索引。


为排序字段建立索引。假设对未建立索引的字段sort,mongodb会将全部的数据取到内存中来排序,
假设集合大到不能在内存中排序,则mongodb会报错。


2. mongodb创建索引


创建索引使用ensureIndex命令。
> db.people.ensureIndex({"username" : 1});
上面语句对people集合的username键做了索引。

3. 组合索引


对于组合查询或排序,建立组合索引。
> db.people.ensureIndex({"date" : -1, "username" : 1});
索引键的1或者-1,表示索引创建的顺序。1为升序, -1为倒序。

假设索引仅仅有一个键,则方向无关紧要。

4. 内嵌文档建立索引


为blog集合的评论依照时间建立索引:
> db.blog.ensureIndex({"comments.date" : 1});

5. 唯一索引


唯一索引确保集合中的每一个键都是唯一值。

> db.people.ensureIndex({"username" : 1}, {"uniqe" : true});
对已有的集合创建唯一索引时。有可能已经有反复值了,这样会创建索引失败。
dropDups会保留第一个文档,删除后面反复的值。

> db.people.ensureIndex({"username" : 1}, {"unique" : true, "dropDups" : true});

6. 查看建立的索引


索引放在system.indexes集合中。
> db.system.indexes.find();
能够查看索引的key, 名称。属于哪个集合。

7. 删除索引


通过索引的名称。使用dropIndexes能够删除索引。

索引名称通过system.indexes来查询。
> db.user.dropIndexes({"username_1" : 1});

地址:http://blog.csdn.net/yonggang7/article/details/28100855




















以上是关于Mongodb的索引的主要内容,如果未能解决你的问题,请参考以下文章

用javascript索引一个mongodb

java.lang.IllegalStateException:键 f0 的片段不再存在:索引 1

solr分布式索引实战分片配置读取:工具类configUtil.java,读取配置代码片段,配置实例

深入理解MongoDB的复合索引

一日一技:MongoDB如何正确中断正在创建的索引

唯一索引不适用于 Mongoose / MongoDB