- Aggregation >
- Map-Reduce >
- Troubleshoot the Map Function
Troubleshoot the Map Function¶
The map function is a JavaScript function that associates or “maps” a value with a key and emits the key and value pair during a map-reduce operation.
To verify the key and value pairs emitted by the map function, write your own emit function.
Consider a collection orders that contains documents of the following prototype:
{
_id: ObjectId("50a8240b927d5d8b5891743c"),
cust_id: "abc123",
ord_date: new Date("Oct 04, 2012"),
status: 'A',
price: 250,
items: [ { sku: "mmm", qty: 5, price: 2.5 },
{ sku: "nnn", qty: 5, price: 2.5 } ]
}
Define the map function that maps the price to the cust_id for each document and emits the cust_id and price pair:
var map = function() { emit(this.cust_id, this.price); };
Define the emit function to print the key and value:
var emit = function(key, value) { print("emit"); print("key: " + key + " value: " + tojson(value)); }
Invoke the map function with a single document from the orders collection:
var myDoc = db.orders.findOne( { _id: ObjectId("50a8240b927d5d8b5891743c") } ); map.apply(myDoc);
Verify the key and value pair is as you expected.
emit key: abc123 value:250
Invoke the map function with multiple documents from the orders collection:
var myCursor = db.orders.find( { cust_id: "abc123" } ); while (myCursor.hasNext()) { var doc = myCursor.next(); print ("document _id= " + tojson(doc._id)); map.apply(doc); print(); }
Verify the key and value pairs are as you expected.
See also
The map function must meet various requirements. For a list of all the requirements for the map function, see mapReduce, or the mongo shell helper method db.collection.mapReduce().
Thank you for your feedback!
We're sorry! You can Report a Problem to help us improve this page.