【问题标题】:MongoDB $elemMatch issueMongoDB $elemMatch 问题
【发布时间】:2013-03-21 17:58:17
【问题描述】:

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

{
    "stats.o":1
}


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

【问题讨论】:

  • 你能展示一下文档的结构吗?
  • stats 是数组还是文档? $elemMatch 仅适用于数组...

标签: mongodb


【解决方案1】:

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

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

所以如果你的文件是:

{ stat : { o : 1 } }

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

如果是的话

{ stat : [ { o : 1 } ] }

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-24
    • 2014-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多