[英]How can I get a sum of sums using MongoDB aggregation?
我想獲得totalHoursForYear
值的總和(總和)。 這是我當前的聚合:
const byYear = await this.workHistoryModel.aggregate([
{
$group: {
_id: '$year',
history: {
$push: '$$ROOT'
},
totalHoursForYear: {
$sum: {
$add: [
{ $multiply: ['$eightHourDays', 8] },
{ $multiply: ['$tenHourDays', 10] },
{ $multiply: ['$twelveHourDays', 12] },
]
}
},
}
},
]);
現在我需要得到totalHoursForYear
的總和才能得到所有年份的總數。 這可能嗎? 我似乎無法使語法正確。 當我嘗試添加另一個總和時:
$group: {
...,
totalHours: {
$sum: {
$add: '$totalHoursForYear'
},
$push: '$$ROOT'
}
}
我收到一個錯誤:“字段 'totalHours' 必須指定一個累加器”
當您需要總和時,您可以使用_id:null
執行另一個$group
,這意味着考慮所有文檔
使用您的腳本,添加以下內容以獲得總數並獲得相同的結構。
{
$group: {
_id: null,
data: {
$push: "$$ROOT"
},
total: {
$sum: "$totalHoursForYear"
}
}
},
{
"$unwind": "$data"
},
{
"$addFields": {
_id: "$data._id",
history: "$data.history",
totalHoursForYear: "$data.totalHoursForYear",
_id: "$$REMOVE",
data: "$$REMOVE"
}
}
工作蒙戈游樂場
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.