为什么这个mongodb查询在';s索引?

为什么这个mongodb查询在';s索引?,mongodb,mongodb-query,Mongodb,Mongodb Query,为什么在使用索引时,以下查询速度较慢 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({'

为什么在使用索引时,以下查询速度较慢

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。安装程序是一个分片副本集,包含大约1200万个文档

我以同样的延迟尝试了以下内容

db.foo.count({'metadata.source' : { $all : ['WZ', 'ED'] }})
当我检查db.currentOp()时,它会显示以下似乎正确的内容:

"planSummary" : "IXSCAN { metadata.source: 1.0 }"
但是numYields非常高,并且还在继续增加。这是否意味着索引不适合内存,正在从磁盘读取。基于我的db.foo.stats(),应该有足够的内存。还有什么可以帮助诊断的吗


这也使用了wiredTiger存储引擎,它似乎存在一些值得注意的性能问题。我正在尝试升级到3.0.7,看看这是否解决了问题。

你的意思是没有索引会变慢吗?我的意思是它似乎永远运行。单个值上的计数会立即返回,例如db.foo.count({'metadata.source':'WZ'})。@MikeWagner,在
中的第一个查询中缺少大括号是否正常?如果我没有弄错的话,它应该是
db.foo.count({$and:[{'metadata.source':'WZ'},{'metadata.source':'ED'}])
实际上我有它……它在另一个网络上,我没有正确键入它。我会更新的post@Philipp实际上,中的
$更像是一种
$或
快捷方式。这将是一个错误,如
db.foo.count({'metadata.source':{$all:['WZ','ED']}})
。你能试试吗,迈克?你的意思是没有索引会慢一些吗?我的意思是似乎永远都在运行。单个值上的计数会立即返回,例如db.foo.count({'metadata.source':'WZ'})。@MikeWagner,在
中的第一个查询中缺少大括号是否正常?如果我没有弄错的话,它应该是
db.foo.count({$and:[{'metadata.source':'WZ'},{'metadata.source':'ED'}])
实际上我有它……它在另一个网络上,我没有正确键入它。我会更新的post@Philipp实际上,
中的
$更像是一种
$或
快捷方式。这将是一个错误,如
db.foo.count({'metadata.source':{$all:['WZ','ED']}})
。你能试试吗,迈克?