我有一个查询,其中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})
答案 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将同时使用这两个索引。添加索引的规则之一如下
索引中字段的顺序应为:
首先,您将在其中查询确切值的字段。 第二,您将要排序的字段。 最后,您将在其中查询一系列值。