Skip to content

索引

索引是特殊的数据结构,它以易于遍历的形式存储集合数据集的一小部分。索引存储特定字段或一组字段的值,按字段值排序。索引项的排序支持有效的相等匹配和基于范围的查询操作。MongoDB 索引使用 B 树数据结构(确切的说是 B-Tree,MySQL 是 B+Tree)

地理空间索引

Geospatial Index:为了支持对地理空间坐标数据的有效查询,MongoDB 提供了两种特殊的索引:返回结果时使用平面几何的二维索引和返回结果时使用球面几何的二维球面索引

文本索引

Text Indexes:MongoDB 提供了一种文本索引类型,支持在集合中搜索字符串内容。这些文本索引不存储特定于语言的停止词(例如”the”、“a”、“or”),而将集合中的词作为词干,只存储根词。

哈希索引

Hashed Indexes:为了支持基于散列的分片,MongoDB 提供了散列索引类型,它对字段值的散列进行索引。这些索引在其范围内的值分布更加随机,但只支 持相等匹配,不支持基于范围的查询

索引操作

db.collection.getIndexes() # 查询索引
db.collection.createIndex(keys, options) # 创建索引
db.collection.dropIndex(index)
db.collection.dropIndexes()
key:包含字段和值对的文档,其中字段是索引键,值描述该字段的索引类型。对于字段上的升序索引,请
指定值 1;对于降序索引,请指定值-1。比如: {字段:1 或-1} ,其中 1 为指定按升序创建索引,如果你
想按降序来创建索引指定为 -1 即可。另外,MongoDB 支持几种不同的索引类型,包括文本、地理空
间和哈希索引
options:
background Boolean 建索引过程会阻塞其它数据库操作,background 可指定以后台方式创建索引,即增加"background" 可选参数。 默认值为 false。
unique Boolean 建立的索引是否唯一。指定为 true 创建唯一索引。默认值为 false.
name string 索引的名称。如果未指定,MongoDB 的通过连接索引的字段名和排序顺序生成一个索引名
称。
partialFilterExpression document 3.0
sparse Boolean 对文档中不存在的字段数据不启用索引;这个参数需要特别注意,如果设置为 true 的话,在索引字段中不会查询出不包含对应字段的文档.。默认值为 false.
expireAfterSeconds integer 指定一个以秒为单位的数值,完成 TTL 设定,设定集合的生存时间
hidden Boolean
storageEngine document