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