Reputation: 3632
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);
}
Upvotes: 6
Views: 10087
Reputation: 611
This may be also solved by the following
function (key, values, rereduce) {
return Math.max.apply({}, values);
}
Upvotes: 12
Reputation: 2588
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
}
Upvotes: 8