0

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

{
    "stats.o":1
}


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

1 回答 1

0

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

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

因此,如果您的文件是:

{ stat : { o : 1 } }

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

但如果是

{ stat : [ { o : 1 } ] }

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

于 2013-05-05T17:36:55.590 回答