简述MongoDB索引类型 ?
参考答案:
MongoDB 支持多种索引类型,每种类型都有其特定的用途和优势。以下是 MongoDB 中常见的索引类型及其简述:
-
单字段索引 (Single Field Index)
- 最基本的索引类型,对一个字段的值进行排序。
- 可以支持高效的查询、排序和更新操作。
- 例如:
db.collection.createIndex({fieldName: 1})
-
复合索引 (Compound Index)
- 在多个字段上建立的索引。
- 可以用于基于多个字段的查询条件的优化。
- 复合索引的字段顺序很重要,因为它决定了索引的效率。
- 例如:
db.collection.createIndex({field1: 1, field2: -1})
-
多键索引 (Multikey Index)
- 对于数组字段自动创建的索引。
- MongoDB 会为数组中的每个元素创建索引条目。
- 这使得基于数组字段的查询更加高效。
-
地理空间索引 (Geospatial Index)
- 用于地理空间数据的查询。
- 包括 2dsphere(用于地球表面的地理数据)和 2d(用于平面地理数据)索引。
- 使得基于地理位置的查询和计算更加高效。
-
文本索引 (Text Index)
- 对字符串内容进行全文搜索。
- 可以使用
$text
和$search
操作符进行文本查询。 - 例如:
db.collection.createIndex({fieldName: "text"})
-
哈希索引 (Hashed Index)
- 支持基于哈希值的查询,通常用于分片键。
- 可以确保数据在分片之间均匀分布。
- 例如:
db.collection.createIndex({fieldName: "hashed"})
-
稀疏索引 (Sparse Index)
- 只包含具有索引字段的文档的条目。
- 如果文档缺少索引字段,那么该文档将不会包含在索引中。
- 这可以节省存储空间,并提高某些类型查询的性能。
- 例如:
db.collection.createIndex({fieldName: 1}, {sparse: true})
-
唯一索引 (Unique Index)
- 确保索引字段的值在集合中是唯一的。
- 这有助于防止数据重复。
- 例如:
db.collection.createIndex({fieldName: 1}, {unique: true})
在使用索引时,需要权衡其带来的性能提升与存储成本的增加。同时,索引的选择和创建应该基于实际的查询模式和数据分布来进行优化。