Я использую mapreduce, чтобы сделать отчет, и я столкнулся с «документом нет свойств», и я думаю, это потому, что у некоторых документов нет свойства, по которому я делаю вычисления.
моя функция карты следующая:
var map = function(){
emit(this.SurveyId, {count: 1, totalScore: : this.totalScore, networth: this.networth});}
функция уменьшения:
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'})
networth не во всех документах в коллекции SurveyReuslt. Я думаю, именно поэтому это не удалось. Как мне указать, что если networth не существует, используйте 0 вместо? Спасибо.