Dear Wiki user,
You have subscribed to a wiki page or wiki category on "Couchdb Wiki" for change notification.
The "Built-In_Reduce_Functions" page has been changed by JensAlfke:
http://wiki.apache.org/couchdb/Built-In_Reduce_Functions?action=diff&rev1=5&rev2=6
Comment:
Grammatical cleanup
= Built-In Reduce Functions =
<>
- Currently (CouchDB 0.11.0) there are three built-in reduce functions. Built-in reduce functions are performed right inside CouchDB implemented in Erlang. In most cases it is very fast because they are way more efficient.
+ CouchDB has three built-in reduce functions. These are implemented in Erlang and run right inside CouchDB, so they are much faster than the equivalent JavaScript functions.
== Usage ==
- To use built-in reduce functions, you simply need to replace your reduce function with a string containing {{{_count}}}, {{{_sum}}} or {{{_stats}}} (without any preceding or tailing whitespace).
+ To use built-in reduce functions, you simply need to replace your reduce function with the string {{{_count}}}, {{{_sum}}} or {{{_stats}}} (without any preceding or tailing whitespace).
- Here is an example design document using build-in reduce functions:
+ Here is an example design document using built-in reduce functions:
{{{
{
"_id":"_design/company",
@@ -30, +30 @@
}
}}}
- == Available Build-In Functions ==
+ == Available Built-In Functions ==
=== _sum ===
- {{{_sum}}} just sums up the emitted values. Therefore the mapped values need to be numbers.
+ {{{_sum}}} just adds up the emitted values, which must be numbers.
The !JavaScript equivalent is:
{{{
@@ -44, +44 @@
=== _count ===
- {{{_count}}} counts the emitted values. It's like {{{_sum}}} for {{{emit(foo, 1)}}}. The map function may emit anything you want.
+ {{{_count}}} counts the number of emitted values. (It's like {{{_sum}}} for {{{emit(foo, 1)}}}.) It ignores the contents of the values, so they can by any type.
The !JavaScript equivalent is:
{{{
function(keys, values, rereduce) {
if (rereduce) {
return sum(values);
- }
- else {
+ } else {
return values.length;
}
}
@@ -61, +60 @@
=== _stats ===
- {{{_stats}}} calculates various numerical statistics on your emitted data. {{{_stats}}} requires, just like {{{_sum}}}, your emitted values to be numbers.
+ {{{_stats}}} calculates some numerical statistics on your emitted values, which must be numbers.
- The reduce output looks like this:
+ The reduce output is an object that looks like this:
{{{
- {"update_seq":6,"rows":[
- {"key":null,"value":{"sum":2,"count":2,"min":1,"max":1,"sumsqr":2}}
+ {"sum":2,"count":2,"min":1,"max":1,"sumsqr":2}
- ]}
}}}
- {{{sum}}} and {{{count}}} is the equiverlent to {{{_sum}}} and {{{_count}}}. {{{min}}} and {{{max}}} are the minimum and maximum values of the emitted values. {{{sumsqr}}} is the sum over all squares of the emitted values (useful for statistics calculations).
+ {{{"sum"}}} and {{{"count"}}} are equivalent to the {{{_sum}}} and {{{_count}}} reductions. {{{"min"}}} and {{{"max"}}} are the minimum and maximum emitted values. {{{"sumsqr"}}} is the sum of the squares of the emitted values (useful for statistical calculations like standard deviation).