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