How to calculate Max value using Map-Reduce in CouchDB?
couchdb, mapreduce
Solution
The couchdb wiki provides a simple example for sum.
Instead of returning the sum of values, a reduce function for max should return the max of the values array. Since calculating the maximum is commutative, associative etc. you do not need to worry about 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
}
Problem
I know there's the built-in `_stats` function that gives you sum, count, min, max, and sumsqr. What I'd like to know is how to calculate just the max in a map-reduce way. I can't come up with a reduce function that will work without some more information. The only thing I can think of is to use sorting on the value and pick off the first value. My map function looks like this: ``` function(doc){ emit(null, doc.value); } ```