MongoDB $ elemMatch问题

时间:2013-03-21 17:58:18

标签: mongodb

我是MongoDB的新手,我觉得我误解了$ elemMatch的工作原理。我正在运行以下两个查询,我希望返回相同的结果集。第一个返回我期望的,所有具有stats.o元素等于1的文档。第二个查询不返回任何文档。有谁知道为什么我会得到第一个查询的结果,但不是第二个?数据库在运行MongoDB 2.2的MongoLab上运行。

{
    "stats.o":1
}


{
    "stats": {
        "$elemMatch": {
            "o": 1
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您可能会看到$ elemMatch的效果仅适用于嵌入式文档数组,而不适用于简单的嵌入式文档。

请求扩展$ elemMatch的功能,追踪为https://jira.mongodb.org/browse/SERVER-6050

因此,如果您的文件是:

{ stat : { o : 1 } }

你不能使用$ elemMatch(但你真的不需要)。

但如果是

{ stat : [ { o : 1 } ] }

那么你可以并且实际上可能需要使用$ elemMatch来获得正确的结果(在你有许多数组元素和必须“一起”匹配的多个标准的情况下。