我在MongoDB聚合管道中使用的步骤之一如下所示:

{
  $group: {
    "_id": "$customer._id",
    "totalBalance": {
      "$sum": "$transactions.amounts.balance"
    }
  }
}


这按预期工作。它汇总了transactions.amounts.balance的数值,并提供了总金额。

除此之外,我想做的是确定在确定此数字时使用了多少个事务(即,确定给定的customer_id中有多少记录,而transactions.amount.balance > 0

我尝试这样做:

{
  $group: {
    "_id": "$customer._id",
    "totalOpenTransactions": {
      "$sum": { "$transactions.amounts.balance" : $gt: 0 }
    }
  }
}


以上无效。所以我也尝试使用一个数组,像这样:

{
  $group: {
    "_id": "$customer._id",
    "totalOpenTransactions": {
      "$sum": [{ "$transactions.amounts.balance" : $gt: 0 }]
    }
  }
}


也行不通。

可以像这样使用$sum吗?还是我需要以不同的方式处理这个特定的聚合阶段?

最佳答案

您可以在$sum中使用$cond来执行此操作:

{
  $group: {
    "_id": "$customer._id",
    "totalOpenTransactions": { $sum: { $cond: { if: { $gt: ["$transactions.amounts.balance", 0] }, then: 1, else: 0 } } }
  }
}

关于javascript - 在MongoDB集合中创建汇总阶段到未完成事务总数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50067626/

10-12 12:47
查看更多