我有一个包含对象的数组。
这些对象具有名称和颜色。有些物品也可以包含儿童! (一组其他对象)。
{
items : [
{
name: 'box'
color: 'red'
},
{
name: 'circle'
color: 'blue'
children: [
{
name: 'sphere'
color: 'orange'
},
{
name: 'polygons'
color: 'green'
}
]
},
{
name: 'triangle'
color: 'pink'
}
]
}
我需要检索这些项目的所有名称并排除它们的颜色。
结果应为:
items : [
{
name: 'box'
},
{
name: 'circle'
children: [
{
name: 'sphere'
},
{
name: 'polygons'
}
]
},
{
name: 'triangle'
}
]
我已经广泛研究了聚合但似乎无法找到解决方案!
如何排除在对象数组中检索值?
答案 0 :(得分:2)
无需聚合。
db.coll.find({}, {'_id' : 0, 'items.name' : 1, 'items.children.name' : 1})
将提供以下输出
{
"items" : [
{
"name" : "box"
},
{
"name" : "circle",
"children" : [
{
"name" : "sphere"
},
{
"name" : "polygons"
}
]
},
{
"name" : "triangle"
}
]
}