好,继续完成第二个需求,求某天内记录的个数统计,直接运行《实战4》编写好的MapReduce,出现异常 又是非数字NaN,通过分析结果,找到原因,原因出现在第一个MapReduce,证据:
上图中可以看到,times下出现了嵌套,这就导致在运算过程中,出现了异常
通过这个问题,应该可以确定,在Reduce的过程中,MongoDB是通过并发处理的,所以需要修改第一个MapReduce中的Reduce,增加对嵌套的判断
function Reduce(key, values) {
var ret={rfid:key};
var times = new Array();
for(var i = 0;i < values.length;i++){
if(values[i].times){
times = times.concat(values[i].times);
}else{
times.push(values[i]);
}
}
ret.times = times;
return ret;
} 重新运行第一个MapReduce,随后再运行第二个需求的MapReduce,没做任何修改,得出结果
从结果可知,1天内的记录为41次,2天内为42次......
|