2015-04-22 86 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將使用兩個索引用於不同的目的。一個用於添加索引規則是像下面

領域的索引中的順序應該是:

首先,在要進行精確值查詢字段。 其次,你將排序的領域。 最後,您將在其中查詢一系列值的字段。