<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>Entrepreneur. Geek. Teacher. Founder, Colingo</description><title>Benjamin Lowenstein</title><generator>Tumblr (3.0; @lionstone)</generator><link>http://benl.com/</link><item><title>MapReduce with MongoDB &amp; Node.js</title><description>&lt;div class="content"&gt;
&lt;p&gt;Here&amp;#8217;s some generic code for doing map-reduce queries in node using the node-mongodb-native driver.&lt;/p&gt;
&lt;p&gt;Suggestions welcome!&lt;/p&gt;
&lt;p&gt;Good resoureces:&lt;br/&gt;&lt;a href="http://www.mongodb.org/display/DOCS/MapReduce" title="http://www.mongodb.org/display/DOCS/MapReduce"&gt;&lt;a href="http://www.mongodb.org/display/DOCS/MapReduce"&gt;http://www.mongodb.org/display/DOCS/MapReduce&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://kylebanker.com/blog/2009/12/mongodb-map-reduce-basics/" title="http://kylebanker.com/blog/2009/12/mongodb-map-reduce-basics/"&gt;&lt;a href="http://kylebanker.com/blog/2009/12/mongodb-map-reduce-basics/"&gt;http://kylebanker.com/blog/2009/12/mongodb-map-reduce-basics/&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="https://github.com/christkv/node-mongodb-native" title="https://github.com/christkv/node-mongodb-native"&gt;&lt;a href="https://github.com/christkv/node-mongodb-native"&gt;https://github.com/christkv/node-mongodb-native&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="codeblock"&gt;&lt;code&gt;var mongodb = require('mongodb'),&lt;br/&gt;    server = new mongodb.Server("localhost", 27017, {}),&lt;br/&gt;    sys = require('util'),&lt;br/&gt;    db = new mongodb.Db('MY_DATABASE_NAME', server, {}),&lt;br/&gt;&lt;br/&gt;db.open(function (error, client) {&lt;br/&gt;  if (error) throw error;&lt;br/&gt;  var mapFn = function(){ &lt;br/&gt;      var n = this.someArray.length&lt;br/&gt;      emit(&lt;br/&gt;          this._id,&lt;br/&gt;          { &lt;br/&gt;              someArrayVals : (n &amp;gt; 0 ? n : 0)&lt;br/&gt;          } &lt;br/&gt;      );&lt;br/&gt;  }&lt;br/&gt;  var reduceFn = function(key, values) {&lt;br/&gt;    var sum = 0;&lt;br/&gt;    var rows = 0;&lt;br/&gt;    values.forEach(function(doc) {&lt;br/&gt;      sum += doc.someArrayVals;&lt;br/&gt;      rows += 1;&lt;br/&gt;    });&lt;br/&gt;    return {someArrayVals: sum, rows : rows  };&lt;br/&gt;  };&lt;br/&gt;&lt;br/&gt;  var MR = {&lt;br/&gt;      mapreduce: "my_collection", &lt;br/&gt;      out:  { inline : 1 },&lt;br/&gt;      map: mapFn.toString(),&lt;br/&gt;      reduce: reduceFn.toString()&lt;br/&gt;  }&lt;br/&gt;&lt;br/&gt;  db.executeDbCommand(MR, function(err, dbres) {&lt;br/&gt;      var results = dbres.documents[0].results&lt;br/&gt;      console.log("executing map reduce, results:")&lt;br/&gt;      console.log(JSON.stringify(results))&lt;br/&gt;      process.exit(1)&lt;br/&gt;  })&lt;br/&gt;})&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;</description><link>http://benl.com/post/19927781665</link><guid>http://benl.com/post/19927781665</guid><pubDate>Sun, 25 Mar 2012 17:50:00 -0700</pubDate><category>mapreduce</category><category>mongodb</category><category>node.js</category><category>nosql</category></item></channel></rss>
