MongoDB Aggregation PDF
MongoDB Aggregation PDF
MongoDB Aggregation PDF
MongoDB - Aggregation
Advertisements
Aggregations 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. In SQL count(*) and with group
by is an equivalent of mongodb aggregation.
Syntax
Basic syntax of aggregate() method is as follows −
>db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)
Example
In the collection you have the following data −
{
_id: ObjectId(7df78ad8902c)
title: 'MongoDB Overview',
description: 'MongoDB is no sql database',
by_user: 'tutorials point',
url: 'http://www.tutorialspoint.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
},
{
_id: ObjectId(7df78ad8902d)
title: 'NoSQL Overview',
description: 'No sql database is very fast',
by_user: 'tutorials point',
url: 'http://www.tutorialspoint.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 10
},
{
_id: ObjectId(7df78ad8902e)
title: 'Neo4j Overview',
description: 'Neo4j is no sql database',
https://www.tutorialspoint.com/mongodb/mongodb_aggregation.htm 1/4
2/28/2018 MongoDB Aggregation
by_user: 'Neo4j',
url: 'http://www.neo4j.com',
tags: ['neo4j', 'database', 'NoSQL'],
likes: 750
},
Now from the above collection, if you want to display a list stating how many tutorials are
written by each user, then you will use the following aggregate() method −
Sql equivalent query for the above use case will be select by_user, count(*) from
mycol group by by_user.
In the above example, we have grouped documents by field by_user and on each
occurrence of by_user previous value of sum is incremented. Following is a list of available
aggregation expressions.
Pipeline Concept
In UNIX command, shell pipeline means the possibility to execute an operation on some
input and use the output as the input for the next command and so on. MongoDB also
supports same concept in aggregation framework. There is a set of possible stages and
each of those is taken as a set of documents as an input and produces a resulting set of
documents (or the final resulting JSON document at the end of the pipeline). This can then
in turn be used for the next stage and so on.
$match − This is a filtering operation and thus this can reduce the amount of
documents that are given as input to the next stage.
$skip − With this, it is possible to skip forward in the list of documents for a given
amount of documents.
$limit − This limits the amount of documents to look at, by the given number
starting from the current positions.
$unwind − This is used to unwind document that are using arrays. When using an
array, the data is kind of pre-joined and this operation will be undone with this to
have individual documents again. Thus with this stage we will increase the amount
of documents for the next stage.
https://www.tutorialspoint.com/mongodb/mongodb_aggregation.htm
Ad ti t 3/4
2/28/2018 MongoDB Aggregation
Advertisements
YouTube 52K
https://www.tutorialspoint.com/mongodb/mongodb_aggregation.htm 4/4