1. 多键索引(Multikey Index):
多键索引允许在一个字段包含多个值的数组上创建索引。当你需要在数组字段上执行查询时,多键索引可以显著提高查询性能。
db.collection.createIndex({ tags: 1 }) // 创建多键索引
2. 文本索引(Text Index):
文本索引用于支持对文本数据的全文本搜索。通过在文本字段上创建文本索引,可以执行自然语言的文本搜索。
db.collection.createIndex({ content: "text" }) // 创建文本索引
3. 复合索引(Compound Index):
复合索引是将多个字段组合在一起创建的索引。复合索引可以支持多字段的查询,并在这些字段上提供排序和过滤功能。
db.collection.createIndex({ field1: 1, field2: -1 }) // 创建复合索引
4. 散列索引(Hashed Index):
散列索引将字段的值哈希后创建索引。散列索引通常用于对字段进行哈希散列而不需要按值进行排序的场景。
db.collection.createIndex({ field: "hashed" }) // 创建散列索引
5. 空间索引(Geospatial Index):
空间索引用于支持地理空间数据的查询,例如地理位置坐标。MongoDB 提供了两种类型的空间索引:2dsphere 和 2d。
// 创建2dsphere索引
db.collection.createIndex({ location: "2dsphere" })
// 创建2d索引
db.collection.createIndex({ location: "2d" })
6. 部分索引(Partial Index):
部分索引是在集合中的子集上创建的索引,而不是在整个集合上。这可以减小索引的大小,提高性能。
db.collection.createIndex(
{ status: 1 },
{ partialFilterExpression: { status: { $eq: "active" } } }
) // 创建部分索引
7. TTL 索引(Time-To-Live Index):
TTL 索引用于在指定的时间后自动删除文档。这对于需要自动过期数据的场景非常有用。
db.collection.createIndex({ createdAt: 1 }, { expireAfterSeconds: 3600 }) // 创建TTL索引,文档将在一小时后过期
这些高级索引可以根据应用程序的特定需求选择性地使用,以提高查询性能和实现特定的功能。在选择索引类型时,要考虑查询的模式、字段的数据类型以及性能需求。
转载请注明出处:http://www.zyzy.cn/article/detail/14243/MongoDB