6

我知道有内置_stats函数可以为您提供 sum、count、min、max 和 sumsqr。我想知道的是如何以 map-reduce 方式计算最大值。如果没有更多信息,我无法想出一个可以工作的 reduce 函数。

我唯一能想到的就是对值使用排序并选择第一个值。

我的地图功能如下所示:

function(doc){
  emit(null, doc.value);
}
4

2 回答 2

12

这也可以通过以下方式解决

function (key, values, rereduce) {
  return Math.max.apply({}, values);
}
于 2013-08-25T10:53:59.630 回答
8

couchdb wiki为 sum提供了一个简单的示例。

max 的 reduce 函数应该返回 values 数组的最大值,而不是返回值的总和。由于计算最大值是可交换的、关联的等,因此您无需担心 rereduce。

function (key, values, rereduce) {
    // Return the maximum numeric value.
    var max = -Infinity
    for(var i = 0; i < values.length; i++)
        if(typeof values[i] == 'number')
            max = Math.max(values[i], max)
    return max
}
于 2012-04-11T16:32:43.380 回答