为 MongoDB 集合中的打开事务总数创建聚合阶段

穆里克

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

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

这按预期工作。它总结了数值transactions.amounts.balance并给出了总金额。

除此之外,我还想做的是确定在确定此数字时使用了多少事务(即,确定给定customer_idtransactions.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这样使用吗?或者我是否需要以不同的方式处理这个特定的聚合阶段?

米克尔

你可以在里面使用$cond$sum来做到这一点:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章