假设我有以下文档架构:
{
_id: ObjectId(...),
name: "Kevin",
weight: 500,
hobby: "scala",
favoriteFood : "chicken",
pet: "parrot",
favoriteMovie : "Diehard"
}
如果我在name-weight
上创建一个复合索引,我将能够指定一个严格的参数(name ==“Kevin”)和一个range
的权重(50到200之间)。但是,我无法做到相反:指定一个重量并给出“范围”的名称。
当然,复合索引订单对涉及范围查询的问题很重要。
如果仅使用完全查询(例如:name ==“Kevin”,weight == 100,hobby ==“C ++”),那么顺序对复合索引是否真正重要?
答案 0 :(得分:1)
如果您有确切的查询,则订单无关紧要。但是当你想确定时,数据库游标上的.explain()
方法就是你的朋友。它可以告诉您在mongo shell中执行查询时使用了哪些索引以及如何使用它们。
由explain返回的文档的重要字段是: