Last updated at 2023-09-07

MongoDB $group Aggregation Tutorial with Example

Last Edit By
Last edited time
Sep 7, 2023 01:15 PM
AI Status
Sep 7, 2023
When working with MongoDB, organizing and summarizing your data is a crucial part of the data management process.
MongoDB's $group aggregation stage plays a pivotal role in achieving this.
In this article, we will explore how to use the $group stage to aggregate data in MongoDB, much like the ORDER BY clause in PostgreSQL.

Introduction to $group

In MongoDB, the $group stage is part of the aggregation pipeline and is used for grouping documents based on specified criteria and performing various operations on grouped data.
This stage is particularly useful when you need to summarize and analyze your data, such as calculating totals, averages, or finding distinct values.

Sample Data

To illustrate how the $group stage works, let's start by creating a sample MongoDB collection and inserting some documents into it.
We will then use the $group stage to perform aggregation operations on this data.

Creating a Sample Collection and Inserting Documents

db.sales.insertMany([ { _id: 1, product: "Widget A", quantity: 10, price: 5 }, { _id: 2, product: "Widget B", quantity: 5, price: 8 }, { _id: 3, product: "Widget A", quantity: 7, price: 5 }, { _id: 4, product: "Widget C", quantity: 15, price: 10 }, { _id: 5, product: "Widget B", quantity: 8, price: 8 } ]);
In this example, we have a sales collection with documents representing sales of different products.

Using $group for Aggregation

Now that we have our sample data, let's explore how to use the $group stage to aggregate this data.
db.sales.aggregate([ { $group: { _id: "$product", // Group by product totalQuantity: { $sum: "$quantity" }, // Calculate total quantity sold totalPrice: { $sum: { $multiply: ["$quantity", "$price"] } } // Calculate total revenue } } ]);
In this aggregation pipeline, we use the $group stage to group documents by the product field.
We then calculate the total quantity sold for each product using the $sum operator and calculate the total revenue by multiplying the quantity and price fields.

Available Accumulator Operators

MongoDB provides various accumulator operators that you can use within the $group stage to perform aggregation operations.
Some commonly used accumulator operators include:
  • $sum: Calculates the sum of numeric values.
  • $avg: Calculates the average of numeric values.
  • $min: Finds the minimum value in a group.
  • $max: Finds the maximum value in a group.
  • $push: Collects values into an array.
  • $addToSet: Collects unique values into an array.


The $group stage in MongoDB's aggregation framework is a powerful tool for summarizing and aggregating data based on specific criteria.
It allows you to organize your data, calculate totals, averages, and perform various other aggregation operations.
Whether you're analyzing sales data, user activity, or any other type of data in MongoDB, the $group stage can help you gain valuable insights and present your data in a meaningful way.
Happy aggregating!

References To Learn From:

Discussion (0)

Related Posts