2014-11-19 2 views
0

Я следующий картографа и редуктор:PyMongo - Можно ли вернуть словарь на карте выходные значения

mapper = Code(""" 
      function() { 
      emit({'a':this.a,'b':this.b}, {'c':this.c,'d':this.d); 
      } 
      """) 

reducer = Code(""" 
      function (key, values) { 
       var i, total_c,total_d = 0; 
       for (i in values) { 
       total_c += values[i].c; 
       total_d += values[i].d; 
       } 
       return {'c':total_c,'d':total_d}; 
      } 
      """) 

Это производит NaN для многих значений. Можно ли передавать словарь в виде вывода из карты в значения?

ответ

0

Я думаю, что ваша ошибка идет, потому что есть некоторые значения, которые не определены. Если он пытается добавить неопределенное число, результатом будет NaN. Как правило, NaNs в pymongo из-за чего-то не так в монго, а не в Python.

Возможно, стоит проверить ваши данные.

Если вы запустите выше картограф и редуктор со следующей структурой:

db.myCollection.mapReduce(mapper, reducer, {query:{$and:[{'c':{$exists:1}}, {'d':{$exists:1}}]}}) 

Это должно запустить его только на значениях, которые имеют значение и остановить пренебрежимо малых!

Смежные вопросы