Hi David we added that in version 2.0:

https://github.com/apache/couchdb/commit/5a2ec4f50 
<https://github.com/apache/couchdb/commit/5a2ec4f50>

The behavior is documented on master:

http://docs.couchdb.org/en/master/ddocs/ddocs.html#reduce-and-rereduce-functions
 
<http://docs.couchdb.org/en/master/ddocs/ddocs.html#reduce-and-rereduce-functions>

Cheers, Adam

> On Jun 13, 2018, at 4:59 PM, David Park <[email protected]> wrote:
> 
> hey robert, _sum doesn't work on objects :(
> 
> David Park   Software Developer
> 
> M 416*.*461*.*2649
> 
> *Points  *|  More together.
> 
> Connect with us: Points <http://l.points.com/69s8/> | Twitter
> <http://l.points.com/uxlj/> | Blog <http://l.points.com/vu4y/> | LinkedIn
> <http://l.points.com/rjs4/> | Careers <http://l.points.com/juqh/>
> 
> TSX: PTS <http://l.points.com/sgf7/>; NASDAQ: PCOM
> <http://l.points.com/ko1o/>
> 
> 111 Richmond St W., Suite 700, Toronto, ON, M5H 2G4, Canada
> 
> Connect with me: LinkedIn <https://www.linkedin.com/in/butterdave>
> 
> 
> 
> On Wed, Jun 13, 2018 at 3:58 PM Robert Samuel Newson <[email protected]>
> wrote:
> 
>> the built-in reduce ("_sum") handles both arrays and objects, so you
>> should be able to just do;
>> 
>> map:
>> function(doc) {
>>  emit(doc.label, {"base":doc.basePoints, "bonus":doc.bonusPoints});
>> }
>> 
>> reduce:
>> _sum
>> 
>> B.
>> 
>>> On 13 Jun 2018, at 20:40, Aurélien Bénel <[email protected]> wrote:
>>> 
>>> Dear David,
>>> 
>>>> I desire that value to be split out by base and bonus points.
>>> 
>>> Then you’ll need an array as the key: a first member for the selection
>> and a second one for the grouping.
>>> 
>>> 
>>> MAP :
>>> 
>>> function(o) {
>>>  emit( [o.label, "base"] , o.basePoints);
>>>  emit( [o.label, "bonus"], o.bonusPoints);
>>> }
>>> 
>>> REDUCE
>>> 
>>> _sum
>>> 
>>> QUERY
>>> 
>>> ?group=true&startkey=["gold"]&endkey=["gold",{}]
>>> 
>>> 
>>> Regards,
>>> 
>>> Aurélien
>>> 
>>> 
>>>> Début du message réexpédié :
>>>> 
>>>> De: David Park <[email protected]>
>>>> Objet: Rép : couchdb erlang reduce - aggregate object
>>>> Date: 13 juin 2018 à 20:17:19 UTC+2
>>>> À: [email protected]
>>>> Répondre à: [email protected]
>>>> 
>>>> ok. so here's my test
>>>> 
>>>> 3 docs
>>>> 
>>>> {"_id": "a", "label": "gold", "basePoints": 1000, "bonusPoints": 2000}
>>>> {"_id": "b", "label": "gold", "basePoints": 10000, "bonusPoints": 20000}
>>>> {"_id": "c", "label": "silver", "basePoints": 10000, "bonusPoints":
>> 20000}
>>>> 
>>>> Then I took your advice and wrote a javascript (not erlang) view
>>>> 
>>>> function(o) {
>>>>  emit(o.label, o.basePoints);
>>>>  emit(o.label, o.bonusPoints);
>>>> }
>>>> 
>>>> then threw in a reduce of
>>>> 
>>>> _sum
>>>> 
>>>> then I queried my view with group = true where key = label
>>>> And I get a response of
>>>> {
>>>> "rows":[
>>>>  {"key":"gold","value":33000}
>>>> ]
>>>> }
>>>> 
>>>> I desire that value to be split out by base and bonus points.
>>>> 
>>>> David Park   Software Developer
>> 
>> 

Reply via email to