数据如下:
{
"_id":5345345345,
"city": "Detroit",
"people":[
{
"name":"Larry",
"value":1200
},
{
"name":"Steve",
"value":1100
},
{
"name":"Larry",
"value":1000
},
{
"name":"Joe",
"value":800
},
{
"name":"Larry",
"value":500
},
{
"name":"Joe",
"value":700
}
]
}
我在聚合查询的中间有这个。我可以从这里做些什么来总结价值领域,并为每个人提供独特的条目" people"?即
{
"_id":5345345345,
"city": "Detroit",
"people":[
{
"name":"Larry",
"value":2700
},
{
"name":"Steve",
"value":1100
},
{
"name":"Joe",
"value":1500
}
]
}
另外,如果" people"还不能有返回空文件的查询。数组为空,例如,不能这样做:
{$unwind:{
path:people
}
},
{$group :
{
_id:"$people.name",
total_value:{"$sum":"people.value"}
}
}
如果在人数组为空时没有返回空文档,那么它可以正常工作。
需要以某种方式使用$ addToSet和$ sum?如何保持与名称相关的价值?
答案 0 :(得分:0)
使用
{
$unwind: {
path : "$people",
preserveNullAndEmptyArrays : true // this line!
}
}