在MongoDB中,索引是提高查询性能的关键。以下是创建和优化MongoDB索引的步骤和建议:
单字段索引:
db.collection.createIndex({ field: 1 });
这里,field 是要索引的字段,1 表示升序索引。
复合索引:
db.collection.createIndex({ field1: 1, field2: -1 });
复合索引包含多个字段,可以更高效地支持多字段查询。
唯一索引:
db.collection.createIndex({ field: 1 }, { unique: true });
唯一索引确保字段值的唯一性。
部分索引:
db.collection.createIndex({ field: 1 }, { partialFilterExpression: { status: "active" } });
部分索引只对满足特定条件的文档创建索引。
文本索引:
db.collection.createIndex({ field: "text" });
文本索引用于全文搜索。
地理空间索引:
db.collection.createIndex({ location: "2dsphere" });
地理空间索引用于地理空间查询。
分析查询模式:
explain() 方法来分析查询计划,了解哪些索引被使用以及查询的性能。db.collection.find({ field: value }).explain("executionStats");
选择合适的索引:
field1 和 field2 进行查询,那么创建一个复合索引 { field1: 1, field2: 1 } 可能比单独创建两个单字段索引更有效。避免过度索引:
定期重建索引:
db.collection.reIndex();
使用覆盖索引:
db.collection.createIndex({ field1: 1, field2: 1 });
db.collection.find({ field1: value1, field2: value2 }).explain("executionStats");
监控索引使用情况:
通过合理地创建和优化索引,可以显著提高MongoDB查询的性能。