Как агрегировать результаты на основе даты
Я новичок в монго и нуждаюсь в помощи в агрегировании следующих данных для соответствия условию "статус=новый" и получаю счет до этого дня.
Например:
Для нижеприведенной коллекции:
[ { "_id": "abcd123", "Date": ISODate("2018-06-08T09:42:36.000Z"), "status": "New", }, { "_id": "abcd124", "Date": ISODate("2018-06-08T09:42:36.000Z"), "status": "New" }, { "_id": "abcd125", "Date": ISODate("2018-06-09T09:31:44.000Z"), "status": "New" }, { "_id": "abcd126", "Date": ISODate("2018-06-10T09:42:43Z"), "status": "New" }, ]
Ожидаемый результат:
[ { "_id": null, "name": "New", "series": [ { "name": ISODate("2018-06-08T09:42:36Z"), "value": 2 }, { "name": ISODate("2018-06-09T09:31:44Z"), "value": 3 ( 2 + 1)--> Previous date + current date }, { "name": ISODate("2018-06-10T09:42:43Z"), "value": 4 (3 + 1) --> previous date sum + current date } ] } ]
Что я уже пробовал:
db.collection.aggregate([ { $match: { status: "New" } }, { $sort: { Date: -1 } }, { $group: { _id: "$Date", value: { $sum: 1 } } }, { $group: { _id: null, series: { $push: { name: "$_id", value: "$value" } } } }, { $addFields: { name: "New" } }, ])
Приведенный выше запрос приводит к подсчету для каждой даты, но не увеличивает количество предыдущих дат.
Цените любую помощь, которая может привести к ожидаемому результату. Спасибо.
codeXprojectX
Любая помощь!