Question

I have a collection in mongo db which looks like this:

"notifications" : [
    {
        "type" : "Shout",
        "created" : ISODate("2014-04-24T13:37:02.678Z")
    },
    {
        "type" : "Shout",
        "created" : ISODate("2014-04-25T17:34:15.388Z")
    }
          ];

I just want to sort these notifications by created date and fetch them using mongo query but not able to do it. Can anybody help me.. Thanks..

Was it helpful?

Solution

You can probably use aggregation framework to sort your data based on date. Here is what I tried and its working fine.

db.shouts.aggregate([
  { "$unwind": "$notifications"}, 
  { "$sort": { "notifications.created": -1 }}, 
  { "$group": { "_id": "$_id", "notifications": { "$push": "$notifications" }}}
]);

and the result is:

 {
     "_id" : ObjectId("5361e2cfbf5e5bf862400210"),
     "notifications" : [
         {
             "type" : "Shout",
             "created" : ISODate("2014-04-25T17:34:15.388Z")
         },
         {
             "type" : "Shout",
             "created" : ISODate("2014-04-24T13:37:02.678Z")
         }
     ]
 }

hope it helps

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top