Note
Aggregation Pipeline as Alternative to Map-Reduce
Starting in MongoDB 5.0, map-reduce is deprecated:
- Instead of map-reduce, you should use an aggregation pipeline. Aggregation pipelines provide better performance and usability than map-reduce. 
- You can rewrite map-reduce operations using aggregation pipeline stages, such as - $group,- $merge, and others.
- For map-reduce operations that require custom functionality, you can use the - $accumulatorand- $functionaggregation operators. You can use those operators to define custom aggregation expressions in JavaScript.
For examples of aggregation pipeline alternatives to map-reduce, see:
Aggregation Commands Comparison Table
The following table provides a brief overview of the features of the MongoDB aggregation commands.
| Description | Designed with specific goals of improving performance and usability for aggregation tasks. Uses a "pipeline" approach where objects are transformed as they
pass through a series of pipeline stages such as
 For more information on pipeline stages, see Aggregation Stages. | Implements the Map-Reduce aggregation for processing large data sets. | 
| Key Features | Pipeline operators can be repeated as needed. Pipeline operators need not produce one output document for every input document. Can also generate new documents or filter out documents. Using the  | In addition to grouping operations, can perform complex aggregation tasks as well as perform incremental aggregation on continuously growing datasets. | 
| Flexibility | You can define custom accumulators with  You can also use the  See  | Custom  See  | 
| Output Results | Returns results as a cursor. If the pipeline includes the
 With  With  | Returns results in various options (inline, new collection, merge,
replace, reduce). See  | 
| Sharding | Supports non-sharded and sharded input collections. 
 | Supports non-sharded and sharded input collections. | 
| More Information |