【发布时间】:2014-09-16 12:02:54
【问题描述】:
我无法理解 MongoDB 对我的查询做了什么。我的文档几乎只包含数组字段,使我无法使用复合索引。 每个字段都使用 ensureIndex({FieldName:1}) 进行索引
查询是这样连接的:
{$and: [{FIELD1:"field1Val"},{FIELD2:"field2Val"},{FIELD3:"field3Val"}]}
如果我运行这个查询,MongoDB 似乎只使用一个索引。 为什么 MongoDB 不并行使用所有索引,然后将它们相交?
Lucene 解决的同样问题比我现在的 MongoDB 实现快 8 倍。
【问题讨论】:
-
这可能无关紧要,但你不需要在那里使用
$and。只需将其设为{FIELD1: 'field1Val', FIELD2: 'field2Val', FIELD3: 'field3Val'},优化器可能会做得更多。 -
我支持 JohnnyHK 删除
$and,因为它没有帮助。此外,您的文档中主要包含数组是非常可疑的。如果您在性能方面遇到问题,能否发布示例文档、查询和查询说明?
标签: mongodb indexing intersection