Click here to Skip to main content
15,887,676 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
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.
Posted
Comments
codeXprojectX 26-Nov-18 1:45am    
Any help!

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900