The mongoDB aggregation framework is one part of Mongo that used to scare me a lot when I was starting out and I think the same is true for a lot of beginners. The entire concept is a bit tricky to wrap your head around and people usually tend to avoid using aggregations as a whole.
In this article I’ll try to explain the aggregation framework in as easy words as possible and probably try to remove this fear of aggregation from some people’s minds.
What is aggregation ?
Aggregation is nothing but just another query method that you can use to find your documents in mongoDB. What is special about it is the way it processes the data and takes the data through stages, filtering in each stage and giving the data ahead (more explanation on it later).
What you need to get into your mind is that aggregation is nothing but just another way to findrecords.
How do aggregations work ?
This is where aggregation is really special and operates in a different way to the normal find queries. What the aggregation framework does is operate in stages, i.e, it does the first operation on the collection , gets a list of documents as the result and then the next operation will be done only on the result of the first operation.
Think of it as an imaginary pipeline, the results of the last stage are the only ones used in the further stages.

The first operation (usually the match operation) is the one that is run on the entire collection. Also, to be noted is that the first stage of the process is the one that benefits from any indexes that you have put up on the collection. The output of the first operation then serves as the input for the next and so on… until we get the output documents.
groupBy with aggregation
One of the biggest advantages of the aggregate framework is it’s ability to give us the GROUP BY sql feature in mongoDB. To have a deeper look at how the aggregate framework uses
$group
for grouping documents you can take a look at this article -> https://easyontheweb.com/group-by-in-mongoose-with-lookup/
With the $group feature comes in a lot of other powers that the aggregate framework gives us. We can add custom fields or values to intermediate results while going through the stages to the next operation to operate on.
How to use aggregate?

This query shows the three most important aspects of the aggregate framework. We first write a
$match
that is the query that we would write in the find of the simple mongoDB searching . Next, we group the documents matching the $match
conditions by the “age”. Note that we use $ to access the fields of the last result in the pipeline , that is why $age
is used.
The third thing we use is the addition of new fields to the resulting documents, we create the fields “women” and “total” where we are storing the name and sum of women we’ve found in the point up till that stage.
What I would recommend you to do is start by writing easy small aggregates and then move to advanced concepts and complex queries with $unwind etc. The aggregate framework is great and is a must for grouping data so you have to face it one day or the other.
Comments
Post a Comment