开发学院

您的位置:首页>教程>正文

教程正文

MongoDB 索引

MongoDB 索引

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

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

ensureIndex()方法

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

语法

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

  此处KEY是要在其上创建索引的字段的名称,1表示升序。要按降序创建索引,需要使用- 1。

例子

>db.mycol.ensureIndex({"title":1})
>
In ensureIndex() method you can pass multiple fields, to create index on multiple fields.

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

  ensureIndex() 方法还接受选项列表(可选)。以下是列表

参数类型描述
background布尔在后台生成索引,以便生成索引不会阻止其他数据库活动。指定true以在背景中建置。默认值为false。
unique布尔创建唯一索引,以便集合不接受插入索引键与索引中现有值匹配的文档。指定true以创建唯一索引。默认值为false。
name 字符串索引的名称。如果未指定,MongoDB将通过连接索引字段的名称和排序顺序来生成索引名称。
dropDups布尔在可能具有重复项的字段上创建唯一索引。MongoDB仅索引键的第一次出现,并从集合中删除包含该键后续出现的所有文档。指定true以创建唯一索引。默认值为false。
sparse布尔如果为true,则索引仅引用具有指定字段的文档。这些索引使用较少的空间,但在某些情况下(特别是排序)表现不同。默认值为false。expireftersecondintegers指定一个以秒为单位的值作为TTL,以控制MongoDB在此集合中保留文档的时间。
v索引版本号索引版本号。默认索引版本取决于创建索引时运行的MongoDB版本。
weights文档权重是范围从1到99,999的数字,并表示该字段相对于其他索引字段的得分显著性。
default_language字符串对于文本索引,确定停止单词列表以及词干分析器和标记器规则的语言。默认值为英语。
language_override 字符串 对于文本索引,请指定文档中包含的字段名称,即覆盖默认语言的语言。默认值为语言。