我正在尝试计算以下所有值的总和。我尝试用不同的方式搜索问题,但找不到答案。数据看起来像这样。 我不在乎密钥,我只是在寻找星期一的总计值
"monday" : {
"a" : 5,
"b" : 2,
"c" : 1,
"d" : 2,
"e" : 3,
"f" : 9,
"g" : 2,
"h" : 16,
"h2" : 8,
"g" : 2
}
答案 0 :(得分:3)
您可以使用$objectToArray将monday
转换为k
和v
字段的数组,然后使用$reduce对其求和:
db.collection.aggregate([
{
$project: {
sum: {
$reduce: {
input: { $objectToArray: "$monday" },
initialValue: 0,
in: { $add: [ "$$value", "$$this.v" ] }
}
}
}
}
])