如何使用CouchDB中的Map-Reduce计算最大值?

PPC*_*der 5 couchdb mapreduce

我知道有内置_stats函数可以给你sum,count,min,max和sumsqr.我想知道的是如何以map-reduce方式计算最大值.我无法想出一个可以在没有更多信息的情况下工作的reduce函数.

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

我的地图功能如下所示:

function(doc){
  emit(null, doc.value);
}
Run Code Online (Sandbox Code Playgroud)

red*_*pet 11

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

function (key, values, rereduce) {
  return Math.max.apply({}, values);
}
Run Code Online (Sandbox Code Playgroud)


tit*_*boa 8

couchdb wiki提供了一个简单的总和示例.

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

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
}
Run Code Online (Sandbox Code Playgroud)