Pymongo - 是否可以在地图值输出中返回字典

时间:2014-11-19 07:07:43

标签: mongodb

我有以下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。是否可以将字典作为值的映射输出?

1 个答案:

答案 0 :(得分:0)

我认为您的错误即将发生,因为有些值未定义。如果它尝试将undefined添加到数字,则结果为NaN。一般来说,pymongo中的NaNs是由于mongo出了问题,而不是Python。

可能值得检查您的数据。

如果使用以下结构运行上述mapper和reducer:

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

这应仅在具有值的值上运行并停止NaN!