2015-04-22 57 views
1

我有一个查询,其中查找()使用不同的文档属性,然后排序。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}) 

回答

2

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}一个索引。

有关详细信息,请参阅:

0

是的mongodb将使用两个索引用于不同的目的。一个用于添加索引规则是像下面

领域的索引中的顺序应该是:

首先,在要进行精确值查询字段。 其次,你将排序的领域。 最后,您将在其中查询一系列值的字段。