我是MongoDB的新手,我觉得我误解了$ elemMatch的工作原理 . 我正在运行以下两个查询,我希望返回相同的结果集 . 第一个返回我期望的,所有具有stats.o元素等于1的文档 . 第二个查询不返回任何文档 . 有谁知道为什么我会得到第一个查询的结果,但不是第二个?数据库在运行MongoDB 2.2的MongoLab上运行 .
{
"stats.o":1
}
{
"stats": {
"$elemMatch": {
"o": 1
}
}
}
1 回答
您可能会看到$ elemMatch的效果仅适用于嵌入式文档数组,而不适用于简单的嵌入式文档 .
有一个请求扩展$ elemMatch的功能跟踪https://jira.mongodb.org/browse/SERVER-6050
所以如果你的文件是:
{ stat : { o : 1 } }
你不能使用$ elemMatch(但你真的不需要) .
但如果是的话
{ stat : [ { o : 1 } ] }
那么你可以并且实际上可能需要使用$ elemMatch来获得正确的结果(在你有许多数组元素和必须“一起”匹配的多个标准的情况下 .