Just in case, it's "startkey" not "startKey", ditto for endkey.
Sent from the ocean floor On 7 Oct 2012, at 19:42, Carl Bourne <[email protected]> wrote: > Thanks for input Kai, > > I gave this a try and it sort of worked. It did summarise all of the > countries for me if I didn't pass in the "startKey", "endKey". However, when > I did it did not return any rows. > > I've taken a different approach now anyway, I'll do the summary part client > side since the document count will be relatively low anyway. > > Might also take a look at Riak to see if this offers any additional > flexibility in this area! > > Thanks for you feedback! > > > On 7 Oct 2012, at 19:09, Kai Griffin <[email protected]> wrote: > >> Carl, your problem sounds very familiar to me, but I'm not really sure if it >> is quite the same as the problem I once had. I had a fairly complex >> use-case that involved summarising multiple values from multiple document >> types, being able to search for these by date (in my case [year, month] or >> [year, week_nbr]). So my map/reduce has so much going on, I'm not sure the >> heart of the issue is really same as yours or not. I've done my best to >> distill this down to your use-case... but there's one glaring issue in that >> my function wants to use the country name as a key, and your country names >> contain spaces, which won't work as keys. So, I'm going to assume that >> they're 2-letter country codes instead. Also, I'm sure someone might say >> that I'm abusing the reduce function... there might be a simpler way of >> doing this with just one value to be summed. >> >> map: >> { >> var obj = {}; >> obj[doc.country] = 1; >> emit ([date], obj) >> } >> >> >> reduce: >> { >> var sums = {}; >> for (var i in values) >> for (var k in values[i]) >> sums[k] = (sums[k] || 0) + values[i][k]; >> return sums; >> } >> >> You can query using startkey,endkeys corresponding to the date range, and if >> you set group_level=0 in your query, you should end up with something like >> this: >> >> {"key":null, "value":{ UK:3, DE:1, HU:1, FR:2, US:1 }} >> >> Which of course isn't quite the structure you might have been hoping for... >> but it does give the right answer in a single row. >> >> >> >> >> On 06/10/2012 23:12, Carl Bourne wrote: >>> Yes - exactly! >>> >>> Which was why I was hoping the reduce function would help. I have managed >>> to do this using some additional middleware (Ruby Sinatra), but that seems >>> to defeat the purpose of using something like Couch in the first place! >>> >>> Carl Bourne | Senior Sales Engineer | mobile: +44 (0) 7770 284294 | >>> www.venafi.com >>> >>> On 6 Oct 2012, at 21:58, Aurélien Bénel <[email protected]> wrote: >>> >>>>> I still not understand why you need to count the docs with the same exact >>>>> timestamp >>>> Ah I think I understand now... You want to select by (exact) date but >>>> group by countries. >>>> Hmm, then it's not hierarchical, you have two different dimensions. Then >>>> my solution cannot help you. Sorry. >>>> >>>> >>>> Regards, >>>> >>>> Aurélien >
