MongoDB AddField 计算的子数组总和

时间:2021-03-06 21:25:10

标签: mongodb mongodb-query

Mongo Playground

假设我有一个像这样的子数组的简单对象:

[
  {
    "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 的值???

Here is a Mongo Playground

1 个答案:

答案 0 :(得分:1)

您可以使用这样的聚合:

db.collection.aggregate([
  {
    $addFields: {
      "TotalInstallments": {
        $sum: "$Installments.TotalPaid"
      },
      "TotalBalanceDue": {
        $subtract: [
          "$TotalBilling",
          {
            $sum: "$Installments.TotalPaid"
          }
        ]
      }
    }
  }
])