Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Mongodb group by values and count the number of occurence

I am trying to count how many times does a particular value occur in a collection.

{
  _id:1,
  field1: value,
  field2: A,
}

{
  _id:2,
  field1: value,
  field2: A,
}

{
  _id:3,
  field1: value,
  field2: C,
}

{
  _id:4,
  field1: value,
  field2: B,
}

what I want is to count how many times A occurs, B occurs and C occurs and return the count.

The output I want

{
  A: 2,
  B: 1,
  C: 1,
}

1 Answers

This is typical use case for $group stage in Aggregation Pipeline. You can do it like this:

  • $group - to group all the documents by field2
  • $sum - to count the number of documents for each value of field2
db.collection.aggregate([
  {
    "$group": {
      "_id": "$field2",
      "count": {
        "$sum": 1
      }
    }
  }
])

Working example

like image 75
NeNaD Avatar answered Nov 01 '25 09:11

NeNaD