我有以下mapper和reducer:
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 :(得分:0)
我认为您的错误即将发生,因为有些值未定义。如果它尝试将undefined添加到数字,则结果为NaN。一般来说,pymongo中的NaNs是由于mongo出了问题,而不是Python。
可能值得检查您的数据。
如果使用以下结构运行上述mapper和reducer:
db.myCollection.mapReduce(mapper, reducer, {query:{$and:[{'c':{$exists:1}}, {'d':{$exists:1}}]}})
这应仅在具有值的值上运行并停止NaN!