Mongodb 如何使用mongo获得元素之和?

Mongodb 如何使用mongo获得元素之和?,mongodb,Mongodb,我有以下json结构- [{ cName:"A", "vms" : [ { "status":"off", "name":"ds0", "capacity":5 }, { "name" : "ds1", "status":"on", "capacity":5 }, { "name" : "ds2", "status"

我有以下json结构-

[{
 cName:"A",
"vms" : [ 
    {
        "status":"off",
        "name":"ds0",
        "capacity":5
    }, 
    {
        "name" : "ds1",
         "status":"on",
         "capacity":5
    }, 
    {
        "name" : "ds2",
         "status":"off",
          "capacity":5
    }, 
    {
        "name" : "ds3",
         "status":"off",
                 "capacity":10
    }
    ],
},
{
 cName:"B",
"vms" : [ 
    {
        "name" : "ds4",
         "status":"on",
                 "capacity":52
    }, 
    {
        "name" : "ds3",
         "status":"off",
         "capacity":50
    }, 
    {
        "name" : "ds5",
         "status":"off",
                 "capacity":15
    }
    ],
}
]
我的预期产出如下:

[{
"cName":"A",
"capacity":20,
},[{
"cName":"B",
"capacity":65,
}
]
我使用mongo聚合来获取输出

我可以使用它获取cname和容量,但无法获取容量之和


如果我理解正确,如何使用mongo聚合获得虚拟机的容量总和??

db.f.aggregate([
{
    $unwind:"$vms"
},

{
    $group:{
        _id:"$cName",
        capacity:{$sum:"$vms.capacity"}
    }
},
{
  $sort:{_id:1}  
},{
   $project:{
      _id:0,
      "cName":"$_id",
       "capacity":1
   } 
}

])
结果:

{
    "result" : [ 
        {
            "capacity" : 25,
            "cName" : "A"
        }, 
        {
            "capacity" : 117,
            "cName" : "B"
        }
    ],
    "ok" : 1
}
我不明白为什么在你的例子中
cName:A容量=20(5+5+5+10)
甚至
cName:B
…也许这只是一个模拟