MongoDBのMapReduceをNode.jsから実行/テストするためのモジュール、mmrdをリリースしました。
インストール
$ npm install mmrd
使い方
例えばMongoDBのワードカウントなどで、以下のようなMapReduceを書いていたとします。
// map.js function map() { var words = this.text.split(' '); words.forEach(function(word) { emit(word, 1); }); }
//reduce.js function reduce(key, values) { var result = 0; values.forEach(function(v) { result += v; }); return result; }
このとき、mmrdを使うと以下のような形でこのMapReduceをNode.jsから実行できます。
// runner.js var mmrd = require('mmrd'); // map test (function() { console.log("Word count / Map test"); var doc = { text: "foo bar baz" }; mmrd.loadMap('map.js'); mmrd.map(doc, function(key, value) { console.log(key, ":", value); }); })(); // reduce test (function() { console.log("Word count / Reduce test"); mmrd.loadReduce('reduce.js'); var key = "foo"; var values = [1, 1]; var reduced = mmrd.reduce(key, values); console.log(key, ":", reduced); })(); // integration test (function() { console.log("Word count / Integration test"); var docs = [ { text: "foo bar baz" }, { text: "foo baz baz"} ]; mmrd.loadMap('map.js'); mmrd.loadReduce('reduce.js'); var result = mmrd.mapReduce(docs); console.log(result); })();起動
$ node runner.js
もちろん、mochaやshouldを使ったテストも書けます。当たり前ですが。
お試しあれ。