mongodb - 如何使用elemMatch匹配嵌套数组

标签 mongodb

我有这样的数据结构

{
  a: 1,
  array1: [
    {
      b: 2
      array2: [
        { 
          // this is my target
          c: 3,
          d: 3
        },
        {
          c: 4,
          d: 4
        }          
      ]
    },
    {
      b: 3
      array2: [
        {
          c: 5,
          d: 5
        },
        {
          c: 6,
          d: 6
        }          
      ]
    }
  ]
}

我知道使用 {"array1": {"$elemMatch": {"b": 2} } } 来匹配第一级 array1 的元素。但是我不知道如何匹配 array1 的 array2 的元素 {c: 3, d: 3}

最佳答案

$elemMatch 用于声明同一嵌套结构中多个字段之间的关联。

例如。如果你想查询 c 和 d 并且需要它们属于同一个子文档,你可以这样查询。

{"array1.array2" : {"$elemMatch" : {"c" : 3, "d":3} } } 

注意:如果你在单个字段上查询,你真的不需要使用$elemMatch(因为没有关联)

例如,在您的查询示例中,您可以改为执行

{"array1.b" : 2} 

关于mongodb - 如何使用elemMatch匹配嵌套数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36168374/

相关文章:

spring - 在 Spring 解决 mongodb 引用

sql - 可扩展的 RDBMS 替代方案、NoSQL、NewSQL

javascript - 我的数据库文件有什么问题?

javascript - 使用 $http.get 获取嵌套 JSON 中的数组(mongoose 和 nodejs)

node.js - 使用 MongoDB 更新插入文档,增加一个字段,如果不存在则将其设置为 0

python - 在mongo/python中查找()指定数量的记录

mongodb - 如何确保 goroutine 在退出前完全运行

node.js - 按日期时间字段获取最新的 MongoDB 记录

mongodb - 您可以在 MongoDB 中查询任何具有给定值的属性吗?

javascript - 在meteorjs中过滤嵌套文档