Skip to content

Instantly share code, notes, and snippets.

@MichaelXavier
Created June 29, 2010 00:56
Show Gist options
  • Save MichaelXavier/456629 to your computer and use it in GitHub Desktop.
Save MichaelXavier/456629 to your computer and use it in GitHub Desktop.
var map = function() { emit(this._id, {amount: this.amount, qty: this.qty})}
var reduce = function(price_id, vals) {
var min = vals[0].amount;
var max = min;
var E_w = vals[0].qty;
var E_v = max;
for (var i = 1; i < vals.length; i++) {
vals[i].amount < min && (min = vals[i].amount);
vals[i].amount > max && (max = vals[i].amount);
E_w += vals[i].qty;
E_v += vals[i].amount;
}
return {min: min, max: max, avg: (E_v/E_w)};
}
use mydb;
var op = db.prices.mapReduce(map, reduce);
db[op.result].find();
//results
{ "_id" : ObjectId("4c2931a8e8278e1c00000006"), "value" : { "min" : 5, "max" : 5, "avg" : 5 } }
{ "_id" : ObjectId("4c2931a8e8278e1c00000007"), "value" : { "min" : -11, "max" : -11, "avg" : -11 } }
{ "_id" : ObjectId("4c2931a8e8278e1c00000008"), "value" : { "min" : 14, "max" : 14, "avg" : 14 } }
{ "_id" : ObjectId("4c2931a8e8278e1c00000009"), "value" : { "min" : 6.5, "max" : 6.5, "avg" : 6.5 } }
{ "_id" : ObjectId("4c2931a8e8278e1c0000000a"), "value" : { "min" : -9.5, "max" : -9.5, "avg" : -9.5 } }
{ "_id" : ObjectId("4c2931a8e8278e1c0000000b"), "value" : { "min" : 19.5, "max" : 19.5, "avg" : 19.5 } }
{ "_id" : ObjectId("4c2931a8e8278e1c0000000c"), "value" : { "min" : 8, "max" : 8, "avg" : 8 } }
{ "_id" : ObjectId("4c2931a8e8278e1c0000000d"), "value" : { "min" : -10, "max" : -10, "avg" : -10 } }
{ "_id" : ObjectId("4c2931a8e8278e1c0000000e"), "value" : { "min" : 18, "max" : 18, "avg" : 18 } }
{ "_id" : ObjectId("4c2931a8e8278e1c0000000f"), "value" : { "min" : 5, "max" : 5, "avg" : 5 } }
{ "_id" : ObjectId("4c2931a8e8278e1c00000010"), "value" : { "min" : -9, "max" : -9, "avg" : -9 } }
{ "_id" : ObjectId("4c2931a8e8278e1c00000011"), "value" : { "min" : 19, "max" : 19, "avg" : 19 } }
{ "_id" : ObjectId("4c2931a8e8278e1c00000012"), "value" : { "min" : 6.5, "max" : 6.5, "avg" : 6.5 } }
{ "_id" : ObjectId("4c2931a8e8278e1c00000013"), "value" : { "min" : -11.5, "max" : -11.5, "avg" : -11.5 } }
{ "_id" : ObjectId("4c2931a8e8278e1c00000014"), "value" : { "min" : 15.5, "max" : 15.5, "avg" : 15.5 } }
{ "_id" : ObjectId("4c2931a8e8278e1c00000015"), "value" : { "min" : 8, "max" : 8, "avg" : 8 } }
{ "_id" : ObjectId("4c2931a8e8278e1c00000016"), "value" : { "min" : 8, "max" : 8, "avg" : 8 } }
{ "_id" : ObjectId("4c2931a8e8278e1c00000017"), "value" : { "min" : 13, "max" : 13, "avg" : 13 } }
{ "_id" : ObjectId("4c293292e8278e1c13000006"), "value" : { "min" : 5, "max" : 5, "avg" : 5 } }
{ "_id" : ObjectId("4c293292e8278e1c13000007"), "value" : { "min" : -6, "max" : -6, "avg" : -6 } }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment