MongoDB
复合索引支持任何prefix of the index fields上的查询,但查询中的字段顺序是否必须与复合索引本身中的顺序匹配?
假设我们有以下索引:
{ "item": 1, "location": 1, "stock": 1 }
是否涵盖此查询:
{"location" : "Antarctica", "item" : "Hamster Wheel"}
答案 0 :(得分:3)
是。索引创建中字段的顺序/顺序很重要。
在上面的示例中,所有过滤" item"的查询可以使用索引,但查询不使用"项"领域和使用" location"和/或" stock"因为你的过滤条件不会使用这个索引。
过滤器中字段的顺序"读取"查询无所谓。 MongoDB很聪明,知道
{"location" : "Antarctica", "item" : "Hamster Wheel"}
与
相同{"item" : "Hamster Wheel", "location" : "Antarctica"}
正如其他人所指出的那样,确保查询使用索引的最佳方法是对查询运行解释http://bit.ly/1oE6zo1