我有一个查询,其中find()使用不同的文档属性,然后使用排序。
例如:
document = { a : "", b : "", c : "", d : "", e : ""}
db.col.find({a : "", b : "", c : ""}).sort({d:1, e:1})我可以创建两个索引,一个用于find(),另一个用于排序(),MongoDB会相应地使用它们吗?
db.col.createIndex({a : 1, b : 1, c : 1})
db.col.createIndex({d:1, e:1})发布于 2015-04-23 13:04:59
当MongoDB操作需要一个与查询谓词完全独立的索引时,sort() (在3.0时)不能使用多个索引(也称为“索引交集”)。您可以使用MongoDB的解释功能确认正在考虑哪些索引(以及获胜计划)
db.col.find({a : "", b : "", c : ""}).sort({d:1, e:1}).explain(true)例如,这意味着理想的复合索引可能是{a:1, b:1, c:1, d:1, e:1}上的单个索引。
有关更多细节,请参见:
发布于 2015-04-22 22:24:03
是的,mongodb将将这两个索引用于不同的目的。添加索引的规则如下所示
索引中字段的顺序应该是:
首先,您将在其中查询确切值的字段。第二,您将对其进行排序的字段。最后,您将在其中查询一系列值的字段。
https://stackoverflow.com/questions/29809701
复制相似问题