Можете ли вы использовать условную логику в вашей функции карты для инициализации значения? - PullRequest
1 голос
/ 01 июля 2011

Я использую 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 вместо? Спасибо.

1 Ответ

0 голосов
/ 01 июля 2011

Это JavaScript ...

if "networth" in item:
    doc.networth+=item.networth;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...