On this page本页内容
Starting in MongoDB 5.0, map-reduce is deprecated:
$group
, $merge
, and others.$accumulator
and $function
aggregation operators, available starting in version 4.4. You can use those operators to define custom aggregation expressions in JavaScript.For examples of aggregation pipeline alternatives to map-reduce, see:
Map-reduce supports operations on sharded collections, both as an input and as an output. This section describes the behaviors of mapReduce
specific to sharded collections.
However, starting in version 4.2, MongoDB deprecates the map-reduce option to create a new sharded collection as well as the use of the sharded
option for map-reduce. To output to a sharded collection, create the sharded collection first. MongoDB 4.2 also deprecates the replacement of an existing sharded collection.
When using sharded collection as the input for a map-reduce operation, mongos
will automatically dispatch the map-reduce job to each shard in parallel. There is no special option required. mongos
will wait for jobs on all shards to finish.
If the out
field for mapReduce
has the sharded
value, MongoDB shards the output collection using the _id
field as the shard key.
Starting in version 4.2, MongoDB deprecates the use of the sharded
option for mapReduce
/db.collection.mapReduce()
.
To output to a sharded collection:
If the output collection does not exist, create the sharded collection first.
Starting in version 4.2, MongoDB deprecates the map-reduce option to create a new sharded collection and the use of the sharded
option for map-reduce. As such, to output to a sharded collection, create the sharded collection first.
If you did not create the sharded collection first, MongoDB creates and shards the collection on the _id
field. However, it is recommended that you create the sharded collection first.
mongos
dispatches, in parallel, a map-reduce post-processing job to every shard that owns a chunk. During the post-processing, each shard will pull the results for its own chunks from the other shards, run the final reduce/finalize, and write locally to the output collection.