MongoDB索引用于查找和排序
问题描述:
我有一个查询,其中查找()使用不同的文档属性,然后排序。MongoDB索引用于查找和排序
例如
document = { a : "", b : "", c : "", d : "", e : ""}
db.col.find({a : "", b : "", c : ""}).sort({d:1, e:1})
我可以创建两个索引,一个用于find()和一个用于sort(),MongoDB会相应地使用它们吗?
db.col.createIndex({a : 1, b : 1, c : 1})
db.col.createIndex({d:1, e:1})
答
当sort()
操作要求索引完全独立于查询谓词时,MongoDB(3.0版本)不能使用多个索引(又名“索引相交”)。您可以使用确认正在考虑哪些指标(和中标方案)MongoDB的explain functionality:
db.col.find({a : "", b : "", c : ""}).sort({d:1, e:1}).explain(true)
对于你的榜样,这意味着,理想的复合指数很可能会在{a:1, b:1, c:1, d:1, e:1}
一个索引。
有关详细信息,请参阅:
- Index Intersection & Sort MongoDB的文档
- Optimizing MongoDB Compound Indexes在 - 博客文章,其早于指数交集,但仍适用于你所描述的查询&排序。
答
是的mongodb将使用两个索引用于不同的目的。一个用于添加索引规则是像下面
领域的索引中的顺序应该是:
首先,在要进行精确值查询字段。 其次,你将排序的领域。 最后,您将在其中查询一系列值的字段。