繁体   English   中英

mongodb从双重嵌套对象中提取值

[英]mongodb extract values from a double nested object

我的数据有这样的结构:

[
  {
    name: 'parent1',
    children:{
      child1:{ age:12, isSomething: true },
      child2:{ age:13, isSomething: false },
      child3:{ age:12, isSomething: true }
    }
  },
  {
    name: 'parent2',
    children:{
      child4:{ age:12, isSomething: true },
      child5:{ age:15, isSomething: false }
    }
  },
  ...
]

每个文档都有一个字段children (对象),其中包含该父级的所有子级,其中每个元素的键是子级名称,值是包含该子级属性的对象。

所有文档中的所有子名称都是唯一的(child1、child2、...)

问题:

我想根据子属性查询文档,例如:我想获取所有包含 15 岁孩子的文档 => 返回“parent2”

是否有一些通配符可以覆盖儿童中的不同键,如下所示:

find({"children.*.age":15})

您可以使用聚合

db.collection.aggregate([
  {
    $set: {
      obj: { "$objectToArray": "$children" }
    }
  },
  {
    $set: {
      obj: {
        "$filter": {
          "input": "$obj",
          "cond": {
            $gte: [ "$$this.v.age", 15 ]
          }
        }
      }
    }
  },
  {
    $match: {
      obj: { $ne: [] }
    }
  },
  {
    $project: {
      name: 1
    }
  }
])

工作Mongo游乐场

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM