假设我有一个 Mongo 集合,其中包含字段a
和b
. 我已经用{a:'a', b : index }
whereindex
从 0 到 1000 迭代地增加了这个集合。
我知道这是非常非常错误的,但无法解释(没有双关语)为什么:
collection.find({i:{$gt:500}}).explain()
确认没有使用索引(我可以看到它扫描了集合中的所有 1,000 个文档)。
不过,以某种方式强制 Mongo 使用索引似乎可行:
collection.find({i:{$gt:500}}).hint({a:1,i:1}).explain()
编辑
Mongo 文档非常清楚,如果您的查询词之一与复合索引的第一个词匹配,它将仅使用复合索引。在这种情况下,使用提示,Mongo 似乎使用了复合索引{a:1,i:1}
,即使查询词不包括a
. 这是真的?