你能在map函数中使用条件逻辑来初始化一个值吗



我正在使用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;

相关内容

  • 没有找到相关文章

最新更新