MongoDB中的索引是什么?如何创建索引?

在MongoDB中,索引是特殊的数据结构,可以高效地查询数据集合中的文档。索引存储在B树数据结构中,对其中的键执行二分查找以快速定位数据。
MongoDB支持在集合上的次要索引(secondary index)和复合索引(compound index)。索引可以极大提高查询的效率,但会略微降低插入和更新操作的速度。

MongoDB支持以下索引类型:

  1. 单字段索引: 对集合中单个字段创建索引。
  2. 复合索引: 对集合中多个字段创建索引,可以按顺序匹配查询条件中的多个字段。
  3. 琐索引: 对集合中嵌入文档或数组中的字段创建索引。
  4. TTL索引: 基于过期时间删除文档的索引。
  5. 文本索引: 对文本内容进行索引,用于文本搜索。
  6. 地理空间索引: 对地理空间坐标数据进行索引,用于地理空间查询。

在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"})