MongoDb索引交集用法

时间:2014-09-16 12:02:54

标签: mongodb indexing intersection

我无法理解MongoDB对我的查询做了什么。我的文档几乎只包含数组字段,使我无法使用复合索引。 每个字段都使用ensureIndex({FieldName:1})

进行索引

查询是AND连接的:

{$ and:[{FIELD1:“field1Val”},{FIELD2:“field2Val”},{FIELD3:“field3Val”}]}

如果我运行此查询,MongoDB似乎只使用一个索引。 为什么MongoDB不是并行使用所有索引然后将它们相交?

Lucene运行的同样问题比我现在的MongoDB实现快了8倍。

1 个答案:

答案 0 :(得分:0)

(在v2.6之前,MongoDB的一个众所周知的限制是每个查询只能使用一个索引,除了一些特殊情况使用$或

要提高查询速度,可以使用hint()强制使用索引。选择最具选择性的索引。)

正如评论所说,它不再是真的。使用索引交集。看来你最多可以使用两个指数相交。请参阅:When are Compound Indexes still relevant in MongoDB 2.6, given the new Index Intersection feature?

@JohnnyHK Ty的评论,它让我学到了新的东西。