Machine.aggregate({$unwind:
{path: "$tax"}
},
{$group:{
_id: "$_id",
payment: {$first: "$tax.payment"}
}},
{$group: {
_id: null,
total: {$sum: "$payment"}
}}
)
Объяснение:
Сначала я использовал $unwind
по налогу, затем по первому $group stage
я сгруппировалв соответствии с _id ,
, таким образом, я получу первую информацию о платеже из массива непогашенных налогов.
Затем я добавил $ sum, чтобы добавить их во второй $group stage
.
Я проверил с этими данными:
Машина Коллекция документов:
{
"_id" : ObjectId("5dbf09a4d7912bcbc61ee9e4"),
"tax" : [
{
"payment" : 10
},
{
"payment" : 20
}
]
},
{
"_id" : ObjectId("5dbf09aad7912bcbc61ee9e5"),
"tax" : [
{
"payment" : 30
},
{
"payment" : 40
}
]
},
{
"_id" : ObjectId("5dbf09afd7912bcbc61ee9e6"),
"tax" : [
{
"payment" : 50
},
{
"payment" : 60
}
]
}
Результат Я получил:
{ "_id" : null, "tot" : 90 }
Надеюсь, это соответствует вашим требованиям.