MongoDB Documentation, Release 3.0.4 Perform the map-reduce operation on the orders collection to group by the cust_id , and calculate the sum of the price for each cust_id : This operation outputs the results to a collection named map_reduce_example . If the map_reduce_example collection already exists, the operation will replace the contents with the re- sults of this map-reduce operation: In this example, you will perform a map-reduce operation on the orders collection for all documents that have an ord_date value greater than 01/01/2012 . The operation groups by the item.sku field, and calculates the number of orders and the total quantity ordered for each sku . The operation concludes by calculating the average quantity per order for each sku value: var mapFunction2 = function () { for ( var idx = 0; idx < this .items.length; idx++) { var key = this .items[idx].sku; var value = { count: 1, qty: this .items[idx].qty 461 7.3. Aggregation Examples 1. Define the map function to process each input document: • In the function, this refers to the document that the map-reduce operation is processing. • For each item, the function associates the sku with a new object value that contains the count of 1 and the item qty for the order and emits the sku and value pair. 3. Perform the map-reduce on all documents in the orders collection using the mapFunction1 map function and the reduceFunction1 reduce function. • The function reduces the valuesPrice array to the sum of its elements. • The valuesPrices is an array whose elements are the price values emitted by the map function and grouped by keyCustId . 2. Define the corresponding reduce function with two arguments keyCustId and valuesPrices : • The function maps the price to the cust_id for each document and emits the cust_id and price pair. • In the function, this refers to the document that the map-reduce operation is processing. 1. Define the map function to process each input document: Return the Total Price Per Customer Calculate Order and Total Quantity with Average Quantity Per Item db.orders.mapReduce( mapFunction1, reduceFunction1, { out: "map_reduce_example" } ) var reduceFunction1 = function (keyCustId, valuesPrices) { return Array.sum(valuesPrices); }; var mapFunction1 = function () { emit( this .cust_id, this .price); };