我在 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/