我知道有内置的_stats
函数可以给你sum,count,min,max和sumsqr。
我想知道的是如何以map-reduce方式计算最大值。我无法想出一个可以在没有更多信息的情况下工作的reduce函数。
我唯一能想到的就是对值使用排序并选出第一个值。
我的地图功能如下所示:
function(doc){
emit(null, doc.value);
}
答案 0 :(得分:10)
这也可以通过以下方式解决
function (key, values, rereduce) {
return Math.max.apply({}, values);
}
答案 1 :(得分:8)
couchdb wiki提供了一个简单的example for sum。
而不是返回值的总和,max的reduce函数应返回values数组的最大值。由于计算最大值是可交换的,关联的等等,因此您无需担心重新减少。
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
}