MongoDB SELECT COUNT GROUP BY MongoDB SELECT COUNT GROUP BY mongodb mongodb

MongoDB SELECT COUNT GROUP BY


This would be the easier way to do it using aggregate:

db.contest.aggregate([    {"$group" : {_id:"$province", count:{$sum:1}}}])


I need some extra operation based on the result of aggregate function. Finally I've found some solution for aggregate function and the operation based on the result in MongoDB. I've a collection Request with field request, source, status, requestDate.

Single Field Group By & Count:

db.Request.aggregate([    {"$group" : {_id:"$source", count:{$sum:1}}}])

Multiple Fields Group By & Count:

db.Request.aggregate([    {"$group" : {_id:{source:"$source",status:"$status"}, count:{$sum:1}}}])

Multiple Fields Group By & Count with Sort using Field:

db.Request.aggregate([    {"$group" : {_id:{source:"$source",status:"$status"}, count:{$sum:1}}},    {$sort:{"_id.source":1}}])

Multiple Fields Group By & Count with Sort using Count:

db.Request.aggregate([    {"$group" : {_id:{source:"$source",status:"$status"}, count:{$sum:1}}},    {$sort:{"count":-1}}])


If you need multiple columns to group by, follow this model. Here I am conducting a count by status and type:

  db.BusinessProcess.aggregate({    "$group": {        _id: {            status: "$status",            type: "$type"        },        count: {            $sum: 1        }    }   })