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 | 字符串 | 对于文本索引,请指定文档中包含的字段名称,即覆盖默认语言的语言。默认值为语言。 |