Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB AddField子数组的计算和_Mongodb_Mongodb Query - Fatal编程技术网

MongoDB AddField子数组的计算和

MongoDB AddField子数组的计算和,mongodb,mongodb-query,Mongodb,Mongodb Query,假设我有一个简单的对象,其子数组如下: [ { "BillingId": 1, "TotalBilling": 10, "Installments": [ { "InstallmentId": "Inst01", "TotalPaid": 2 }, { "I

假设我有一个简单的对象,其子数组如下:

[
  {
    "BillingId": 1,
    "TotalBilling": 10,
    "Installments": [
      {
        "InstallmentId": "Inst01",
        "TotalPaid": 2
      },
      {
        "InstallmentId": "Inst02",
        "TotalPaid": 5
      }
    ]
  }
]
[
  {
    "BillingId": 1,
    "TotalBilling": 10,
    "TotalInstallments": 7,
    "TotalBalanceDue": 3,
  }
]
db.collection.aggregate([
  {
    $addFields: {
      "TotalInstallments": {
        $sum: "$Installments.TotalPaid"
      },
      "TotalBalanceDue": {
        $subtract: [
          "$TotalBilling",
          {
            $sum: "$Installments.TotalPaid"
          }
        ]
      }
    }
  }
])
我想运行一个聚合到$addified,它将是数组分期付款的'TotalPaid'的$sum。我会将结果添加到另一个字段中,这将是TotalBilling与TotalInstallations的美元减去。。。。会是这样的:

[
  {
    "BillingId": 1,
    "TotalBilling": 10,
    "Installments": [
      {
        "InstallmentId": "Inst01",
        "TotalPaid": 2
      },
      {
        "InstallmentId": "Inst02",
        "TotalPaid": 5
      }
    ]
  }
]
[
  {
    "BillingId": 1,
    "TotalBilling": 10,
    "TotalInstallments": 7,
    "TotalBalanceDue": 3,
  }
]
db.collection.aggregate([
  {
    $addFields: {
      "TotalInstallments": {
        $sum: "$Installments.TotalPaid"
      },
      "TotalBalanceDue": {
        $subtract: [
          "$TotalBilling",
          {
            $sum: "$Installments.TotalPaid"
          }
        ]
      }
    }
  }
])
我想知道我是否会使用Map并推送分期付款或减少或组的值


您可以使用如下聚合:

[
  {
    "BillingId": 1,
    "TotalBilling": 10,
    "Installments": [
      {
        "InstallmentId": "Inst01",
        "TotalPaid": 2
      },
      {
        "InstallmentId": "Inst02",
        "TotalPaid": 5
      }
    ]
  }
]
[
  {
    "BillingId": 1,
    "TotalBilling": 10,
    "TotalInstallments": 7,
    "TotalBalanceDue": 3,
  }
]
db.collection.aggregate([
  {
    $addFields: {
      "TotalInstallments": {
        $sum: "$Installments.TotalPaid"
      },
      "TotalBalanceDue": {
        $subtract: [
          "$TotalBilling",
          {
            $sum: "$Installments.TotalPaid"
          }
        ]
      }
    }
  }
])

如果分期付款为NULL或空,如何默认为0(零)?,并将默认为0。另一个问题。。。当分期付款总额为字符串而不是十进制时。。。直接求和是行不通的。。。是否应该应用映射和用户$toDecimal,然后是$sum?刚刚添加了另一个名为Installments2的道具,并对分期付款进行映射。Total和Just$toDecimal。很好!谢谢