我正在使用mapreduce做报告,遇到了一个"文档没有属性",我认为这是因为有些文档没有我正在进行计算的属性。
以下是我的地图功能:
var map = function(){
emit(this.SurveyId, {count: 1, totalScore: : this.totalScore, networth: this.networth});}
reduce函数:
var reduce = function(key,values){
var doc = {count: 0, totalScore: 0, networth: 0};
values.forEach(function(item){
doc.count+=1;
doc.totalScore+=item.totalScore;
doc.networth+=item.networth;});
return doc;}
完成功能:
var finalize = function(key,reduced){
reduced.avg = reduced.totalScore/reduced.count;
reduced.netAvg = reduced.networth/reduced.count;
return reduced;}
地图缩减呼叫
db.SurveyResult.mapReduce(map,reduce,{finalize: finalize, out: 'my_result'})
净值不在SurveyReuslt集合的所有文档中。我认为这就是它失败的原因。如何指定,以便在净值不存在的情况下使用0?非常感谢。
这是javascript。。。
if "networth" in item:
doc.networth+=item.networth;