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

标签 javascript mongodb aggregation-framework

我在 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可以这样用吗?或者我是否需要以不同的方式处理这个特定的聚合阶段?

最佳答案

您可以使用$cond$sum 内执行此操作:

{
  $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/

相关文章:

javascript - 我如何指向两个字段以在 javascript 中使用相同的值

python - Mongodb复制集自动重新连接在nginx + uwsgi上下运行后无法正常工作

c# - 在聚合框架 C# 中使用 Facets

mongodb - $setIntersection 失败,子文档数组不在集合中

javascript:如何在另一个div的 "begining"中附加div

javascript - 如何在项目中使用 index.js?

javascript - 具有多种外观的多个类上的 WrapAll()

mongodb - Mongo 查询需要很长时间。如何让它更快?

node.js - 使用nodejs更新mongoDB中的表单值时出错

javascript - MongoDB mapReduce 方法意外结果