使用汇总汇总文档

时间:2019-03-18 13:19:18

标签: mongodb aggregation-framework

数据如下:

{
 "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"}
}} 

但是我想一起查看所有三个文档。使用聚合甚至有可能吗?

1 个答案:

答案 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"}}

])