MongoDB聚合与来自多个文档的数组对象值的总和

Har*_*ale 2 mongodb mongodb-query aggregation-framework

我有一个包含以下数据的集合:

{
    "_id": "1",
    "arrlstdetails": [{
        "_id": "1",
        "quantity": 35.5,
        "units": "m3"
    }]
},{
    "_id": "2",
    "arrlstdetails": [{
            "_id": "1",
            "quantity": 35.5,
            "units": "m3"
        },
        {
            "_id": "2",
            "quantity": 12.25,
            "units": "m3"
        },
        {
            "_id": "3",
            "quantity": 28.20,
            "units": "t"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我想对按单位(m3 或 t)过滤的数量总和执行 MongoDB 聚合。

这是我想在查询后得到的结果:

例子:1。

{
"Unit":"m3",
"Total quantity sum":"83.25"
}
Run Code Online (Sandbox Code Playgroud)

例子:2。

{
"Unit":"t",
"Total quantity sum":"28.20"
}
Run Code Online (Sandbox Code Playgroud)

如何查询以获取数量总和?

Har*_*hah 5

使用$unwind$group

db.getCollection('test').aggregate([
    { $unwind: "$arrlstdetails" },
    { $group : {
        _id : "$arrlstdetails.units",
        "Total quantity sum" : {$sum : "$arrlstdetails.quantity"}
    }}
])
Run Code Online (Sandbox Code Playgroud)