我无法理解MongoDB对我的查询做了什么。我的文档几乎只包含数组字段,使我无法使用复合索引。 每个字段都使用ensureIndex({FieldName:1})
进行索引查询是AND连接的:
{$ and:[{FIELD1:“field1Val”},{FIELD2:“field2Val”},{FIELD3:“field3Val”}]}
如果我运行此查询,MongoDB似乎只使用一个索引。 为什么MongoDB不是并行使用所有索引然后将它们相交?
Lucene运行的同样问题比我现在的MongoDB实现快了8倍。
答案 0 :(得分:0)
(在v2.6之前,MongoDB的一个众所周知的限制是每个查询只能使用一个索引,除了一些特殊情况使用$或
要提高查询速度,可以使用hint()强制使用索引。选择最具选择性的索引。)
正如评论所说,它不再是真的。使用索引交集。看来你最多可以使用两个指数相交。请参阅:When are Compound Indexes still relevant in MongoDB 2.6, given the new Index Intersection feature?