打算用mongodb mapreduce之前一定要知道的事!!!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了打算用mongodb mapreduce之前一定要知道的事!!!相关的知识,希望对你有一定的参考价值。

mapreduce其实是分批处理数据的,每一百次重新reduce处理,所以到reduce里的数据如果是101条,那就会分2次进入。

这导致的问题就是在reduce中 如果 初始化 var count = 0;在循环中 count ++,最后输出的是1???

避免都方法是,把数据存在返回的value里,这个value是会在循环进入reduce的时候重用的。在循环中 count  += value.count就能把之前都100加上了!!!

还有如果只有一条数据,那它不会进入reduce,会直接返回。

下面是具体例子:

            string map = @"
            function() {
                var view = this;
                emit(view.activity, {pv: 1});
            }";
            string reduce = @"        
            function(key, values) {
                var result = {pv: 0};
                values.forEach(function(value){ 
                   result.pv +=  value.pv;
                });
                return result;
            }";
            string finalize = @"
            function(key, value){
                return value;
            }";

 

以上是关于打算用mongodb mapreduce之前一定要知道的事!!!的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB--MapReduce分布统计s

MongoDB:糟糕的 MapReduce 性能

用mongodb的mapreduce可以加两个条件吗

Mongodb中数据聚合之基本聚合函数countdistinctgroup

mongodb学习3---mongo的MapReduce

mongodb mapReduce