- Aggregation >
- Aggregation Pipeline >
- Aggregation Pipeline and Sharded Collections
Aggregation Pipeline and Sharded Collections¶
On this page
The aggregation pipeline supports operations on sharded collections. This section describes behaviors specific to the aggregation pipeline and sharded collections.
Behavior¶
Changed in version 3.2.
If the pipeline starts with an exact $match
on a shard key,
the entire pipeline runs on the matching shard only. Previously, the
pipeline would have been split, and the work of merging it would have
to be done on the primary shard.
Changed in version 3.6.
When aggregation operations run on multiple shards, the results are
routed to the mongos
to be merged. However, $out
and $lookup
must run on the primary shard
and are aggregated there.
Optimization¶
When splitting the aggregation pipeline into two parts, the pipeline is split to ensure that the shards perform as many stages as possible with consideration for optimization.
To see how the pipeline was split, include the explain
option in the
db.collection.aggregate()
method.
Optimizations are subject to change between releases.