Aggregation Pipeline
The aggregation command, with its aggregation pipeline, is an extremely powerful tool that allows to easily construct complex queries.
Example
db.secrets.aggregate([
{
"$match": {
"example": 15
}
},
{
"$project": {
"other": 1
}
}
])
This example aggregation query, first filters all records from the collection named “secrets” where the field “example” is equal to 15. In a second step, it applies a projection on the field named “other”, which as a consequence, is the only field shown in the result.
This query is equivalent to the following SQL query:
SELECT "other"
FROM "secrets"
WHERE "example" = 15
Stages
The MongoDB Query Language supports different possible pipeline stages. In the following, we describe all stages supported by Polypheny.
$addFields
Adds a new field to an existing record.
$count
Counts the number of records from the previous stage.
$group
Groups the record by a needed _id
field, and additionally allows specifying other aggregations.
$limit
Limits the retrieved records to the given amount of records.
$match
Filters the previous stage with the provided condition.
$project
Allows to apply an inclusive or exclusive projection to the records.
$replaceRoot
This is an alias for $replaceWith
that allows to replace a document with one of its subfields.
Attention: This stage is only possible when querying a document schema.
$set
This is an alias for $addFields
, which allows adding additional entries to an existing record during retrieval.
$skip
Skips the specified amount of records.
$sort
Allows sorting by the given entities.
$unset
Thi is an alias for multiple exclusive projections.
$unwind
Allows to deconstruct an array into multiple records for each entry.
Attention: This stage is only possible when querying a document schema.