@dimonnwc3

Как правильно сделать запрос в mongoDB с помощью aggregation framework?

Разбираюсь с монго и застрял на aggregation framework.
Есть 2 коллекции, денежные счета(accounts) и транзацкии(transactions).
Транзакции хранят ссылку на каком счету были сделаны, либо две ссылки если это был перевод с одного на другой.

Счета онлайн preview: www.jsoneditoronline.org/?id=0957b9a7234970747f586...
Транзакции онлайн preview: www.jsoneditoronline.org/?id=c71dd28067663766ecd43...

На выходе, с помощью aggregation framework, хочется получить массив статистики по счетам такого вида:

[{
  "name": "Cash",
  "_id": "570549ea97cf9917637a5243",
  "transactions": "количество транзакций по этому аккаунту",
  "spent": "сумма всех полей amount из транзакций с типом spent",
  "earned": "сумма всех полей amount из транзакций с типом earned",
  "withdrawal": "сумма всех полей amount из транзакций с типом transfer, где данный аккаунт является source",
  "deposits": "сумма всех полей amount из транзакций с типом transfer, где данный аккаунт является destination",
  "summary": "(earned + deposits) - (spent + withdrawal)"
}]


Как правильно сделать запрос?
  • Вопрос задан
  • 333 просмотра
Пригласить эксперта
Ответы на вопрос 1
@lega
Я бы все эти поля хранил бы в счете (аккаунте), см. надежный перевод денег со счета на счет: https://docs.mongodb.org/manual/tutorial/perform-t...

Не нужно выкручиваться с отчетом, да и все нужные данные можно быстро достать по одному "точечному" запросу.
А как вы, в вашем подходе, собираетесь защищаться от двойной траты денег в минус?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы