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 <rnew...@apache.org> 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 <aurelien.be...@utt.fr> 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 <david.p...@points.com> > >> Objet: Rép : couchdb erlang reduce - aggregate object > >> Date: 13 juin 2018 à 20:17:19 UTC+2 > >> À: user@couchdb.apache.org > >> Répondre à: user@couchdb.apache.org > >> > >> 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 > >