MongoDB
复合索引支持对索引字段的任何前缀进行查询,但是查询中的字段顺序是否必须与复合索引本身中的顺序匹配?
假设我们有以下索引:
{ "item": 1, "location": 1, "stock": 1 }
它是否涵盖此查询:
{"location" : "Antarctica", "item" : "Hamster Wheel"}
MongoDB
复合索引支持对索引字段的任何前缀进行查询,但是查询中的字段顺序是否必须与复合索引本身中的顺序匹配?
假设我们有以下索引:
{ "item": 1, "location": 1, "stock": 1 }
它是否涵盖此查询:
{"location" : "Antarctica", "item" : "Hamster Wheel"}
是的。索引创建中字段的顺序/顺序很重要。
在上面的示例中,过滤“item”的所有查询都可能使用索引,但不使用“item”字段并使用“location”和/或“stock”作为过滤条件的查询将不会使用该索引。
“读取”查询中过滤器中字段的顺序无关紧要。MongoDB 足够聪明,知道这一点
{"location" : "Antarctica", "item" : "Hamster Wheel"}
是相同的
{"item" : "Hamster Wheel", "location" : "Antarctica"}
正如其他人指出的那样,确保您的查询使用索引的最佳方法是对您的查询运行解释http://bit.ly/1oE6zo1