Extension::MongoDBMapReduce Method
IN THIS PAGE
Syntax
.MapReduce as c (mapFunction as C [, reduceFunction as C [, finalizeFunction as C [, options as C]]])
Arguments
- mapFunction
function definition to remap the results (grouping).
- reduceFunction
function to reduce the collected results (i.e summarize)
- finalizeFunction
Character
- options
Character
Description
Get result of a map/Reduce against a mongo collection.
MapReduce allows processing of the data on the server to conform better to a desired result.
Get Companies by Country
dim mongo as extension::MongoDB = extension::MongoDB::Create("mongodb://localhost:27017","Northwinds","Customers") ? json_reformat(mongo.MapReduce("function() {emit(this.Country,this.CompanyName);}","")) = [ { "_id": "Germany", "value": [ "Alfreds Futterkiste", "Blauer See Delikatessen", "Drachenblut Delikatessen", "Frankenversand", "Königlich Essen", "Lehmanns Marktstand", "Morgenstern Gesundkost", "Ottilies Käseladen", "QUICK-Stop", "Toms Spezialitäten", "Die Wandernde Kuh" ] }, { "_id": "Mexico", "value": [ "Ana Trujillo Emparedados y helados", "Antonio Moreno Taquería", "Centro comercial Moctezuma", "Pericles Comidas clásicas", "Tortuga Restaurante" ] }, ....
The map function here maps the CompanyName into a connection keyed on the Country.
Count Companies by Country
dim mongo as extension::MongoDB = extension::MongoDB::Create("mongodb://localhost:27017","Northwinds","Customers") ? json_reformat(mongo.MapReduce("function() {emit(this.Country,this.CompanyName);}","function(key,values) { return values.length; }")) = [ { "_id": "Germany", "value": 11 }, { "_id": "Mexico", "value": 5 }, { "_id": "UK", "value": 7 }, ...
This example adds a second parameter to 'reduce' the data to a count of the companies found in each Country.