为什么在使用索引时,以下查询会变慢?
db.foo.count({$and:[{'metadata.source':'WZ'}, {'metadata.source':'ED'}]})
索引
{
"v" : 1,
"key" : { 'metadata.source" : 1 },
"name" : "metadata.source_1",
"ns" : "bar.foo"
}
其中元数据字段是JSON数组
以下单值会立即返回
db.foo.count({'metadata.source':'WZ'})
更新
我使用的是Mongo v3.0.3。安装程序是一个分片副本集,包含大约12M文档。
我尝试了以下相同的延迟
db.foo.count({'metadata.source' : { $all : ['WZ', 'ED'] }})
当我检查db.currentOp()时,它显示以下似乎正确的内容:
"planSummary" : "IXSCAN { metadata.source: 1.0 }"
但是numYields非常高并且继续增加。这是否意味着索引不适合内存并从磁盘读取。应该有足够的内存基于我的db.foo.stats()。还有什么我应该寻求帮助诊断的吗?
这也使用了wiredTiger存储引擎,它似乎有一些明显的性能问题。我尝试升级到3.0.7,看看是否能解决问题。