У меня возникли проблемы с балансом всех моих учетных записей. Все учетные записи имеют ссылки на различные пункты депозита при сборе депозитов. КоллекцияMongoDB: сумма всех предметов в коллекции, на которую делается ссылка.
Accounts: коллекция
[{
"_id": "56b1ce63315748b44f1174e1",
"name": "Foo bar",
"deposits": [
{
"$oid": "56b1ce78315748b44f1174e2"
}
]
}]
Депозиты:
{
"_id": {
"$oid": "56b1deb84f40bfa435e22f3f"
},
"account": {
"$oid": "56b1dea34f40bfa435e22f3e"
},
"amount": 300,
"date": {
"$date": "2016-02-01T00:00:00.000Z"
}
}
Я пытался объединить запрос, но он всегда возвращает баланс: 0. Я думаю, мне нужно, чтобы заполнить этот пункт до использование совокупности. Но как мне это сделать?
Accounts.aggregate([
{ $unwind: "$deposits" },
{
$group: {
_id: "$_id",
name: { "$first": "$name" },
balance: { $sum: "$deposits.amount" }
}
}])
Решение:
{
$lookup:
{
from: 'deposits',
localField: 'amount',
foreignField: 'deposits',
as: 'deposits'
},
},
{ $unwind: "$deposits" },
{
$group: {
id: "$_id",
name: { "$first": "$name" },
balance: { $sum: "$deposits.amount" }
}
}
В коллекции 'Accounts' я не вижу ключа' amount'. – dikesh
Входит в состав вкладов – bjorkblom
Что представляет собой символ 'помощник' в коллекции вкладов? Это то же самое, что и ссылка на идентификатор учетной записи? – chridam