2013年1月30日星期三

MongoDB : mapreduce传参例子

注意:注释里面不要写中文,会报错。。。
 
例子:统计colc里面,各种key(如colca,colcb)的出现次数
 
 
// mongo --host xxx.xxx.xxx.xxx --port 27017 -u xxx -p xxx --eval 'src="raw_data";dst="stat_data"' --quiet test_mr.js
// data :  { cola : xxx , colb : yyy , colc : {  colca : 1 , colcb : 2 } }

mr_main_func = function(mr){

    mr["map"] = function(){
        var raw = this.colc;
        for(k in raw){
            var emit_data = {
                cola : this.cola,
                colb : this.colb,
                colc_field : k
            };
            emit(emit_data, 1);
        }
    };

    mr["reduce"] = function(key, emits) {
        total = 0;
        for (var i in emits) {
            total += emits[i];
        }
        return total;
    };

    mr["verbose"] = true;
    db.runCommand(mr);
};

mr_main_func({
    "mapreduce" : src,
    "out" :  { "reduce": dst }
}); 

没有评论:

发表评论