Один из шагов, которые я использую в своем конвейере агрегации 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
использоваться таким образом? Или мне нужно по-другому подходить к этой конкретной стадии агрегации?