MongoDB - 索引

索引支持有效解决查询.如果没有索引,MongoDB必须扫描集合的每个文档,以选择与查询语句匹配的文档.这种扫描非常低效,需要MongoDB处理大量数据.

索引是特殊的数据结构,以易于遍历的形式存储一小部分数据集.索引存储特定字段或字段集的值,按索引中指定的字段值排序.

ensureIndex()方法

要创建索引,您需要使用MongoDB的ensureIndex()方法.

语法

ensureIndex的基本语法()方法如下().

 
> db.COLLECTION_NAME.ensureIndex({KEY:1})

此处key是要在其上创建索引的字段的名称,1是升序.要按降序创建索引,您需要使用-1.

示例

 
> db. mycol.ensureIndex({"title":1})
>

ensureIndex()方法中,您可以传递多个字段,在多个字段上创建索引.

 
> db.mycol.ensureIndex({"title":1,"description": -  1})
>

ensureIndex()方法也接受选项列表(可选).以下是列表 :

参数Type描述
backgroundBoolean在后台构建索引,以便构建索引不会阻止其他数据库活动.指定true以在后台构建.默认值为 false .
uniqueBoolean创建唯一索引集合不接受插入索引键或索引与索引中的现有值匹配的文档.指定true以创建唯一索引.默认值为 false .
namestring索引的名称.如果未指定,MongoDB通过连接索引字段的名称和排序顺序生成索引名称.
                         dropDupsBoolean在可能具有重复项的字段上创建唯一索引. MongoDB仅对第一次出现的键进行索引,并从集合中删除包含该键的后续出现的所有文档.指定true以创建唯一索引.默认值为 false .
sparseBoolean如果为true,则索引仅引用文档指定的字段.这些索引使用较少的空间,但在某些情况下(特别是排序)表现不同.默认值为 false .
expireAfterSecondsinteger指定一个值,以秒为单位,用于控制MongoDB在此集合中保留文档的时间的TTL.
vindex version索引版本号.默认索引版本取决于创建索引时运行的MongoDB版本.
weightsdocument权重是一个数字范围从1到99,999,表示该字段相对于其他索引字段在分数方面的重要性.
default_languagestring对于文本索引,确定停用词列表的语言以及词干分析器和标记化程序的规则.默认值为 english .
language_overridestring对于文本索引,请指定名称包含文档中的字段,覆盖默认语言的语言.默认值为language.