mongodb 创建索引

2018年04月17日 13:35 | 2621次浏览

索引能够实现高效地查询。没有索引,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。



小说《我是全球混乱的源头》

感觉本站内容不错,读后有收获?小额赞助,鼓励网站分享出更好的教程