У меня есть база данных со следующей структурой:
[
{
"provider": "provider 1",
"debts": [
{
"debt": 500,
"paid": true
},
{
"debt": 900,
"paid": false
},
{
"debt": 600,
"paid": false
}
]
},
{
"provider": "provider 2",
"debts": [
{
"debt": 500,
"paid": false
}
]
}
]
Я хочу, чтобы каждый объект сохранял в поле total
сумму поля debt
, содержащегося в массиве debts
(debts.debt
) ТОЛЬКО если свойство paid
ложно. (в моем реальном коде он хорошо работает до этого момента).
db.collection.aggregate(
[
{
$unwind: "$debts",
},
{
$group: {
_id: "$_id",
total: {
$sum: {
$cond: [{ $eq: ["$debts.paid", false] }, "debts.debt", 0],
},
},
},
}
]
как я могу получить общую сумму свойства total
, содержащегося во всех моих объектах, которые удовлетворяют вышеуказанному условию?
{
"debts_providers": [
{
"_id": "5f29af0a17196c1624f7dd88",
"total": 1500
},
{
"_id": "5f29af0a17196c1624f7dd89",
"total": 500
}
],
"sum_total_objects": 2000 /*900+600+500*/
}