在MongoDB中,索引是特殊的数据结构,可以高效地查询数据集合中的文档。索引存储在B树数据结构中,对其中的键执行二分查找以快速定位数据。
MongoDB支持在集合上的次要索引(secondary index)和复合索引(compound index)。索引可以极大提高查询的效率,但会略微降低插入和更新操作的速度。
MongoDB支持以下索引类型:
- 单字段索引: 对集合中单个字段创建索引。
- 复合索引: 对集合中多个字段创建索引,可以按顺序匹配查询条件中的多个字段。
- 琐索引: 对集合中嵌入文档或数组中的字段创建索引。
- TTL索引: 基于过期时间删除文档的索引。
- 文本索引: 对文本内容进行索引,用于文本搜索。
- 地理空间索引: 对地理空间坐标数据进行索引,用于地理空间查询。
在MongoDB中创建索引的语法如下:
db.collection.createIndex(keys, options)
- keys: 字段名称或字段键值对,用于创建索引。
- options: 可选参数,指定索引的名称、唯一性、过期时间等。
示例:
# 单字段索引
db.users.createIndex({age: 1})
# 复合索引
db.users.createIndex({name: 1, age: -1})
# 琐索引
db.users.createIndex({"address.street": 1})
# TTL索引
db.logs.createIndex({timestamp: 1}, {expireAfterSeconds: 3600})
# 文本索引
db.posts.createIndex({content: "text"})