Как мы можем использовать запрос, чтобы найти сумму поля путем объединения с некоторыми фильтрами? - PullRequest
0 голосов
/ 21 июня 2019

У меня есть коллекция, которая содержит документ, такой как:

{ _id: ObjectID(), userName: "aa", amount: 50, date: 1561119425317 }

Значения, которые у меня есть для запроса: timeStamp1 и timeStamp2.

Я хочу сумму суммы, сгруппированной по userName, тогда запрос для этого будет

db.collection.aggregate([
{$match: {date: {$gte: timeStamp1, $lte: timeStamp2}},
{$group: {"_id" : "$userName", total:{"$sum" : "$amount"}}}
])

Я хочу получить результат в таких частях, как если бы я разбил интервал timeStamp1 на timeStamp2 в 5 частях, а затем я хочу получить одинаковый результат для каждого интервала.

Как я могу это сделать, не выполняя вышеуказанный запрос 5 раз (по одному на каждый интервал). Потому что в будущем число интервалов может увеличиться до 30 или 40.

1 Ответ

0 голосов
/ 21 июня 2019

Это похоже на случай $ bucket

Я не могу напечатать пример агрегации прямо сейчас, но документация для этой стадии конвейера довольно хорошая.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...