数据如下:
{
"id":1234,
"quantity":10,
"price":45
},
{
"id":"1235",
"quantity":15,
"price":85
}
我想要的结果是
{
"id":1234,
"quantity":"10",
"price":45
},
{
"id":"1235",
"quantity":15,
"price":85
},
{
"id":"",
"quantity":25,
"price":130
}
我只能通过这样做得到第三份文件
{"$group":{
"_id":"",
"quantity":{"$sum":"$quantity"},
"price":{"$sum":"$price"}
}}
但是我想一起查看所有三个文档。使用聚合甚至有可能吗?
答案 0 :(得分:0)
尝试这个
db.collection.aggregate([
{
$facet:{
sum:[
{"$group":{
"_id":null,
"quantity":{"$sum":"$quantity"},
"price":{"$sum":"$price"}
}}
],
existing:[
{"$group":{
"_id":"$id",
"quantity":{"$sum":"$quantity"},
"price":{"$sum":"$price"}
}}
]
}
},
{
$project:{
items: { $concatArrays: [ "$sum", "$existing" ] }
}
},
{
$unwind:{
path:"$items",
preserveNullAndEmptyArrays:true
}
},
{$replaceRoot:{newRoot:"$items"}}
])