Aggregation has the most important role in MongoDB. MongoDB Aggregation operations process data records and return computed results. Aggregation operations group values from multiple documents together and can perform a variety of operations on the grouped data to return a single result.
to perform the aggregate function in MongoDB, aggregate() is the function to be used. Following is the syntax for aggregation :
db.collection_name.aggregate(aggregate_operation)
Suppose, You have Employees collection which has multiple documents.
[
{
"_id" : ObjectId("5f26e736deec6e20ea057831"),
"name" : "John",
"age" : 35,
"department" : "department A",
"salary" : 200000
},
{
"_id" : ObjectId("5f26e7c0deec6e20ea057832"),
"name" : "Rom",
"age" : 30,
"department" : "department A",
"salary" : 70000
},
{
"_id" : ObjectId("5f26e9dedeec6e20ea057833"),
"name" : "Tony",
"age" : 31,
"department" : "department B",
"salary" : 40000
},
{
"_id" : ObjectId("5f26e9dedeec6e20ea057834"),
"name" : "Peter",
"age" : 32,
"department" : "department B",
"salary" : 30000
},
{
"_id" : ObjectId("5f26e9dedeec6e20ea057835"),
"name" : "Andrew",
"age" : 33,
"department" : "department C",
"salary" : 20000
}
]
Now We want to get the total of employees corresponding to department wise.
db.employees.aggregate([{$group : {_id : "$department", total_employee : {$sum : 1}}}])
Output:-
{ “_id” : “department C”, “total_employee” : 1 }
{ “_id” : “department B”, “total_employee” : 2 }
{ “_id” : “department A”, “total_employee” : 2 }
{ “_id” : “department B”, “total_employee” : 2 }
{ “_id” : “department A”, “total_employee” : 2 }
Different Expression which is used by an aggregate function
Expression
Description
$sum
Sums up the defined value from all documents in the collection.
$min
Gets the minimum of the corresponding values from all documents in the collection.
$max
Gets the maximum of the corresponding values from all documents in the collection.
$avg
Calculates the average of all given values from all documents in the collection.
$push
Inserts the value to an array in the resulting document.
$pop
remove the value from an array in the resulting document.
$addToSet
Inserts the value to an array in the resulting document but does not create duplicates.
$first
Gets the first document from the source documents according to the grouping. Typically this makes only sense together with some previously applied “$sort”-stage.
$last
Gets the last document from the source documents according to the grouping. Typically this makes only sense together with some previously applied “$sort”-stage.