汇总聚合中的所有命名字段

时间:2019-04-03 12:34:16

标签: mongodb mongodb-query aggregation-framework

我正在尝试计算以下所有值的总和。我尝试用不同的方式搜索问题,但找不到答案。数据看起来像这样。 我不在乎密钥,我只是在寻找星期一的总计值

"monday" : {
                "a" : 5,
                "b" : 2,
                "c" : 1,
                "d" : 2,
                "e" : 3,
                "f" : 9,
                "g" : 2,
                "h" : 16,
                "h2" : 8,
                "g" : 2
                }

1 个答案:

答案 0 :(得分:3)

您可以使用$objectToArraymonday转换为kv字段的数组,然后使用$reduce对其求和:

db.collection.aggregate([
    {
        $project: {
            sum: {
                $reduce: {
                    input: { $objectToArray: "$monday" },
                    initialValue: 0,
                    in: { $add: [ "$$value", "$$this.v" ] }
                }
            }
        }
    }
])

Mongo playground