MongoDB索引详解
一、索引简介
索引支持在MongoDB中高效执行查询。没有索引,MongoDB必须执行集合扫描,即扫描集合中的每个文档,以选择与查询语句匹配的那些文档。如果查询存在适当的索引,则MongoDB可以使用该索引来限制它必须检查的文档数。
索引是特殊的数据结构,它以易于遍历的形式存储集合数据集的一小部分。索引存储一个特定字段或一组字段的值,按该字段的值排序。索引条目的排序支持有效的相等匹配和基于范围的查询操作。另外,MongoDB可以通过使用索引中的顺序返回排序的结果。
下图说明了使用索引选择和排序匹配文档的查询:
从根本上讲,MongoDB中的索引类似于其他数据库系统中的索引。MongoDB在集合级别定义索引,并支持MongoDB集合中文档的任何字段或子字段的索引。
索引操作基本命令:
名称 | 描述 |
---|---|
db.collection.createIndex() |
在集合上建立索引。 |
db.collection.dropIndex() |
删除集合上的指定索引。 |
db.collection.dropIndexes() |
删除集合上的所有索引。 |
db.collection.getIndexes() |
返回描述集合中现有索引的文档数组。 |
db.collection.reIndex() |
重建集合上所有现有的索引。 |
db.collection.totalIndexSize() |
报告集合上的索引使用的总大小。提供围绕输出totalIndexSize 字段的包装collStats 。 |
cursor.explain() |
报告有关游标的查询执行计划。 |
cursor.hint() |
强制MongoDB对查询使用特定的索引。 |
cursor.max() |
指定游标的排他上限。用于cursor.hint() |
cursor.min() |