I am new to mongo and need help in aggregating the following data for matching condition "status=New" and get count till that day.
For example:
For below collection:
[
{
"_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"
},
]
Expected result:
[
{
"_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
}
]
}
]
What I have tried:
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"
}
},
])
Above query results the count for each date but doesn't increment previous dates count.
Appreciate any help that can lead to expected result. Thank you.