MongoDB 基础教程

MongoDB 高级教程

MongoDB 笔记

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/mongodb-indexing.html

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() 方法也可以接受一些可选参数,如下所示:

参数 类型 描述
background 布尔值 在后台构建索引,从而不干扰数据库的其他活动。取值为 true 时,代表在后台构建索引。默认值为 false
unique 布尔值 创建一个唯一的索引,从而当索引键匹配了索引中一个已存在值时,集合不接受文档的插入。取值为 true 代表创建唯一性索引。默认值为 false
name 字符串 索引名称。如果未指定,MongoDB 会结合索引字段名称和排序序号,生成一个索引名称。
dropDups 布尔值 在可能有重复的字段内创建唯一性索引。MongoDB 只在某个键第一次出现时进行索引,去除该键后续出现时的所有文档。
sparse 布尔值 如果为 true,索引只引用带有指定字段的文档。这些索引占据的空间较小,但在一些情况下的表现也不同(特别是排序)。默认值为 false
expireAfterSeconds 整型值 指定一个秒数值,作为 TTL 来控制 MongoDB 保持集合中文档的时间。
v 索引版本 索引版本号。默认的索引版本跟创建索引时运行的 MongoDB 版本号有关。
weights 文档 数值,范围从 1 到 99, 999。表示就字段相对于其他索引字段的重要性。
default_language 字符串 对文本索引而言,用于确定停止词列表,以及词干分析器(stemmer)与断词器(tokenizer)的规则。默认值为 english。
language_override 字符串 对文本索引而言,指定了文档所包含的字段名,该语言将覆盖默认语言。默认值为 language。