[英]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.