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を使ったテストも書けます。当たり前ですが。
お試しあれ。
No comments:
Post a Comment