码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2016-11-23 19:12:03      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:重用   返回   apr   循环   function   log   blog   return   view   

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之前一定要知道的事!!!

标签:重用   返回   apr   循环   function   log   blog   return   view   

原文地址:http://www.cnblogs.com/amazingDuck/p/6094524.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!