MongoDB聚合,对象内的对象总和

时间:2018-12-14 07:53:26

标签: mongodb mongodb-query aggregation-framework

我正在尝试在mongoDb中聚合数据。 该请求非常有效:

db.getCollection('map').aggregate([
{
    $group: {
        _id: "$Support",
        gross: { $sum :"$Budget.Gross"},
    }}        
])

但是,我希望有这样的东西:

db.getCollection('map').aggregate([
{
    $group: {
        _id: "$Support",
        Budget: { gross: { $sum :"$Budget.Gross"}},
    }}        
])

这行不通,他说:“预算字段必须是一个累加器对象”。 我了解为什么无法以这种方式进行。 MongoDb不知道如何汇总{总额:{$ sum:“ $ Budget.Gross”}}。

但是,有什么方法可以得到这样的结果吗?

谢谢您的帮助

1 个答案:

答案 0 :(得分:1)

您必须使用$projection来相应地调整输出的形状

db.getCollection('map').aggregate([
  { "$group": {
    "_id": "$Support",
    "gross": { "$sum": "$Budget.Gross" },
  }},
  { "$project": {
    "Budget": { "gross": "$gross" }
  }}
])