【问题标题】:PyMongo MapReduce always using floatsPyMongo MapReduce 总是使用浮点数
【发布时间】:2012-09-11 11:49:33
【问题描述】:

我正在尝试使用 mapreduce,但由于某种原因它会将整数转换为浮点数。

地图:

function() {
    emit(this._id.p, 1);
}

减少:

function(key, values) {
    var total = 0;
    for(var i = 0; i < values.length; i++) {
        total += values[i];
    }
    return total;
}

我得到这样的输出:

[
    {u'_id': 1.0, u'value': 6.0}, 
    {u'_id': 2.0, u'value': 6.0}, 
    {u'_id': 3.0, u'value': 5.0}, 
    {u'_id': 4.0, u'value': 6.0}, 
    {u'_id': 5.0, u'value': 3.0}, 
    {u'_id': 6.0, u'value': 6.0},
    **snip**
]

【问题讨论】:

    标签: mongodb mapreduce pymongo


    【解决方案1】:

    Javascript 没有“整数”的概念,所有数字都是浮点数。因此,您的 emit(this._id.p, 1) 语句正在发出浮点 1.0。 MongoDB 为 Javascript 解释器提供了一个 NumberIntNumberLong 类来解决这个问题。

    改用emit(this._id.p, NumberInt(1))

    【讨论】:

      猜你喜欢
      • 2011-04-13
      • 2018-01-28
      • 2017-11-30
      • 2015-10-06
      • 2016-11-26
      • 2015-09-03
      • 2018-11-30
      • 2018-12-16
      • 2012-08-29
      相关资源
      最近更新 更多