假设我有一个像这样的子数组的简单对象:
[
{
"BillingId": 1,
"TotalBilling": 10,
"Installments": [
{
"InstallmentId": "Inst01",
"TotalPaid": 2
},
{
"InstallmentId": "Inst02",
"TotalPaid": 5
}
]
}
]
我想对 $Addfied 运行一个聚合,这将是数组分期付款的“TotalPaid”的 $sum。我将预测结果添加另一个文件,该文件将是 TotalBilling 与 TotalInstallments 的 $subtract .... 将是这样的:
[
{
"BillingId": 1,
"TotalBilling": 10,
"TotalInstallments": 7,
"TotalBalanceDue": 3,
}
]
我想知道我是否会使用 Map 并推送分期付款、Reduce 或 Group 的值???
答案 0 :(得分:1)
您可以使用这样的聚合:
db.collection.aggregate([
{
$addFields: {
"TotalInstallments": {
$sum: "$Installments.TotalPaid"
},
"TotalBalanceDue": {
$subtract: [
"$TotalBilling",
{
$sum: "$Installments.TotalPaid"
}
]
}
}
}
])