用于查找和排序的MongoDB索引用法

时间:2015-04-22 22:00:30

标签: mongodb indexing

我有一个查询,其中find()使用不同的文档属性,然后使用排序。

e.g。

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 个答案:

答案 0 :(得分:2)

<script> document.cookie="cid1={{utm_campaign}}; path=/; domain=.example.com" </script> 操作需要一个完全独立于查询谓词的索引时,MongoDB(从3.0开始)不能使用多个索引(也就是&#34;索引交集&#34;)。您可以使用MongoDB explain functionality确认正在考虑的索引(以及获胜计划):

sort()

对于您的示例,这意味着理想的复合索引可能是db.col.find({a : "", b : "", c : ""}).sort({d:1, e:1}).explain(true) 上的单个索引。

有关详细信息,请参阅:

答案 1 :(得分:0)

是的mongodb将同时使用这两个索引。添加索引的规则之一如下

索引中字段的顺序应为:

首先,您将在其中查询确切值的字段。 第二,您将要排序的字段。 最后,您将在其中查询一系列值。