## Return the Total Price Per Customer 

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 : 

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. 

• The function maps the price to the cust_id for each document and emits the cust_id and price pair. 

var mapFunction1 = function () { emit( this .cust_id, this .price); }; 

2. Define the corresponding reduce function with two arguments keyCustId and valuesPrices : 

• The valuesPrices is an array whose elements are the price values emitted by the map function and grouped by keyCustId . 

• The function reduces the valuesPrice array to the sum of its elements. 

var reduceFunction1 = function (keyCustId, valuesPrices) { return Array.sum(valuesPrices); }; 

3. Perform the map-reduce on all documents in the orders collection using the mapFunction1 map function and the reduceFunction1 reduce function. 

db.orders.mapReduce( mapFunction1, reduceFunction1, { out: "map_reduce_example" } ) 

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: 

## Calculate Order and Total Quantity with Average Quantity Per Item 

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: 

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. 

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 

