Dear wiki user, You have subscribed to a wiki page "Couchdb Wiki" for change notification.
The page "Built-In_Reduce_Functions" has been deleted by JoanTouzet: https://wiki.apache.org/couchdb/Built-In_Reduce_Functions?action=diff&rev1=7&rev2=8 Comment: Migrated to http://docs.couchdb.org/en/latest/ddocs.html#reduce-and-rereduce-functions - <<Include(EditTheWiki)>> - = Built-In Reduce Functions = - - See also the [[http://docs.couchdb.org/en/latest/ddocs.html#reduce-and-rereduce-functions|official documentation]] for this topic. - - <<TableOfContents()>> - - 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 the string {{{_count}}}, {{{_sum}}} or {{{_stats}}} (without any preceding or tailing whitespace). - - Here is an example design document using built-in reduce functions: - {{{ - { - "_id":"_design/company", - "_rev":"12345", - "language": "javascript", - "views": - { - "all_customers": { - "map": "function(doc) { if (doc.type == 'customer') emit(doc.id, 1) }", - "reduce" : "_count" - }, - "total_purchases_by_customer": { - "map": "function(doc) { if (doc.type == 'purchase') emit(doc.customer_id, doc.amount) }", - "reduce": "_sum" - } - } - } - }}} - - == Available Built-In Functions == - - === _sum === - {{{_sum}}} just adds up the emitted values, which must be numbers. - - The !JavaScript equivalent is: - {{{ - function(keys, values, rereduce) { - return sum(values); - } - }}} - - - === _count === - {{{_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 { - return values.length; - } - } - }}} - - - === _stats === - - {{{_stats}}} calculates some numerical statistics on your emitted values, which must be numbers. - - The reduce output is an object that looks like this: - {{{ - {"sum":2,"count":2,"min":1,"max":1,"sumsqr":2} - }}} - - {{{"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). -