3

MongoDB复合索引支持对索引字段的任何前缀进行查询,但是查询中的字段顺序是否必须与复合索引本身中的顺序匹配?

假设我们有以下索引:

{ "item": 1, "location": 1, "stock": 1 }

它是否涵盖此查询:

{"location" : "Antarctica", "item" : "Hamster Wheel"}
4

1 回答 1

3

是的。索引创建中字段的顺序/顺序很重要。

在上面的示例中,过滤“item”的所有查询都可能使用索引,但不使用“item”字段并使用“location”和/或“stock”作为过滤条件的查询将不会使用该索引。

“读取”查询中过滤器中字段的顺序无关紧要。MongoDB 足够聪明,知道这一点

{"location" : "Antarctica", "item" : "Hamster Wheel"}

是相同的

{"item" : "Hamster Wheel", "location" : "Antarctica"}

正如其他人指出的那样,确保您的查询使用索引的最佳方法是对您的查询运行解释http://bit.ly/1oE6zo1

于 2014-07-08T14:40:30.240 回答