MongoDB: db.collection.group() method
db.collection.group
The db.collection.group() method is used to Groups documents in a collection by the specified keys and performs simple aggregation functions such as computing counts and sums.
Syntax:
db.collection.group({ key, reduce, initial [, keyf] [, cond] [, finalize] })
Parameters:
The db.collection.group() accepts a single document that contains the following:
Name | Description | Required / Optional |
Type |
---|---|---|---|
key | The field or fields to the group. Returns a key object for use as the grouping key. | Required | document |
reduce | An aggregation function that operates on the documents during the grouping operation. These functions may return a sum or a count. The function takes two arguments: the current document and an aggregation result document for that group. | Required | function |
initial | Initializes the aggregation result document. | Required | initial |
keyf | Alternative to the key field. Specifies a function that creates a key object for use as the grouping key. Use keyf instead of key to group by calculated fields rather than existing document fields. | Optional | function |
cond | The selection criteria to determine which documents in the collection to process. If you omit the cond field, db.collection.group() processes all the documents in the collection for the group operation. | Required | document |
finalize | A function that runs each item in the result set before db.collection.group() returns the final value. This function can either modify the result document or replace the result document as a whole. | Optional | function |
Assume that the sample collection is empdetails:
{
"_id" : ObjectId("56750affdaac17575df77f3e"),
"emp_code" : "E005",
"emp_name" : "Alan Hogg",
"date_of_join" : "15/09/2013",
"salary" : 19000,
"gross" : {
"basic" : 12000,
"da" : 5000,
"hra" : 2000
},
"deduction" : {
"pf" : 2000,
"pt" : 300,
"it" : 200
}
}
{
"_id" : ObjectId("567532f0f61afaaed2aae48c"),
"emp_code" : "E006",
"emp_name" : "Karlos Mint",
"date_of_join" : "23/05/2010",
"salary" : 17000,
"gross" : {
"basic" : 11000,
"da" : 4500,
"hra" : 1500
},
"deduction" : {
"pf" : 3000,
"pt" : 300,
"it" : 400
}
}
{
"_id" : ObjectId("567532fbf61afaaed2aae48d"),
"emp_code" : "E007",
"emp_name" : "Burg Hence",
"date_of_join" : "27/08/2011",
"salary" : 20000,
"gross" : {
"basic" : 14000,
"da" : 5000,
"hra" : 1000
},
"deduction" : {
"pf" : 2500,
"pt" : 300,
"it" : 200
}
}
{
"_id" : ObjectId("56753307f61afaaed2aae48e"),
"emp_code" : "E004",
"emp_name" : "Kim Nail",
"date_of_join" : "16/10/2010",
"salary" : 17000,
"gross" : {
"basic" : 14000,
"da" : 3000,
"hra" : 0
},
"deduction" : {
"pf" : 2000,
"pt" : 300,
"it" : 200
}
}
Example: Group by Two Fields
The following example groups by the date_of_join and gross.basic fields those documents that have date_of_join greater than 01/01/2009.
db.empdetails.group(
{
key: { "date_of_join": 1, "gross.basic": 1 },
cond: { "date_of_join": { $gt: "01/01/2009" } },
reduce: function ( curr, result ) { },
initial: { }
}
);
Output
[ { "date_of_join" : "15/09/2013", "gross.basic" : 12000 }, { "date_of_join" : "23/05/2010", "gross.basic" : 11000 }, { "date_of_join" : "27/08/2011", "gross.basic" : 14000 }, { "date_of_join" : "16/10/2010", "gross.basic" : 14000 } ]
Example: Group by Two Fields
The following example groups by the date_of_join and gross.basic fields, those documents that have date_of_join greater than 01/01/2009 and calculates the sum of the basic field for each grouping:
db.empdetails.group(
{
key: { "date_of_join": 1, "gross.basic": 1 },
cond: { "date_of_join": { $gt: "01/01/2009" } },
reduce: function ( curr, result ) {
result.total += curr.gross.basic;
},
initial: { total : 0 }
}
);
Output:
[ { "date_of_join" : "15/09/2013", "gross.basic" : 12000, "total" : 12000 }, { "date_of_join" : "23/05/2010", "gross.basic" : 11000, "total" : 11000 }, { "date_of_join" : "27/08/2011", "gross.basic" : 14000, "total" : 14000 }, { "date_of_join" : "16/10/2010", "gross.basic" : 14000, "total" : 14000 } ]
Retrieve the restaurants data from here
Previous:
db.collection. getShardVersion() method
Next:
db.collection.insert() method
It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.
https://www.w3resource.com/mongodb/shell-methods/collection/db-collection-group.php
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics