incubator-couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jan Lehnardt <...@apache.org>
Subject Re: [user] Obtaining unique values from a view
Date Sat, 11 Apr 2009 15:14:02 GMT
Hi Wout,

can you add this to http://wiki.apache.org/couchdb/View_Snippets?

Cheers
Jan
--

On 10 Apr 2009, at 14:32, Wout Mertens wrote:

> Note to self: I now realize that the easiest way (perhaps the best)  
> to do the below is to have your function be
>
> map: function(doc) {
> if (doc.Experiment)
> for (i in doc.Conditions){
>     emit([doc.Experiment, i], 1);
> }
> }
>
> reduce: function(key,values,rereduce)
> {
> return sum(values);
> }
>
> This gives you rows like
>
> {"key":["Something","X"],"value":3}
> {"key":["Something","Y"],"value":4}
>
> where value is the count.
>
> You can replace 1 and the sum with null if you're not interested in  
> the count.
>
> This is way better than a unique() function because it calculates in  
> constant time and memory and you can request subranges of values.
>
> Wout.
>
> On Mar 3, 2009, at 2:38 PM, Wout Mertens wrote:
>
>> I believe this has been covered in this thread:
>> http://markmail.org/thread/lwqfwlscrvilwm34
>>
>> but I think a totally satisfactory answer was not found.
>>
>> Wout.
>>
>> On Mar 3, 2009, at 2:27 PM, Manolo Padron Martinez wrote:
>>
>>> Hi:
>>>
>>> I'm really a newbie, and I have a newbie problem (and maybe a miss
>>> conception of the way to work with couch).
>>> I have a lot of documents with this form (that represents  
>>> experiments with
>>> any number of conditions, so X and Y could be only X or even  
>>> X,Y,Z...)
>>>
>>> {
>>> "Experiment":"something",
>>> "Conditions":
>>>     {
>>>       "X":3,
>>>       "Y":2
>>>     }
>>> }
>>>
>>> And I have a view like:
>>> MAP:
>>>
>>> function(doc) {
>>> if (doc.Experiment)
>>> for (i in doc.Conditions){
>>>     emit(doc.Experiment, i);
>>> }
>>> }
>>>
>>> REDUCE:
>>>
>>> function(key,values)
>>> {
>>> return values;
>>> }
>>>
>>> When I launch the view I get this:
>>>
>>> {"rows":[{"key":"Something","value":["X","Y"]}, 
>>> {"key":"Something2","value": 
>>> ["X","Y","X","Y","X","Y","Z","X","Y","X","Y","X","Y","Z"]}]}
>>>
>>>
>>>
>>> I would like to get what are the conditions for every experiment  
>>> grouped by
>>> experiment without repetitions (I mean something like)
>>>
>>> {"rows":[{"key":"Something","value":["X","Y"]}, 
>>> {"key":"Something2","value":["X","Y","Z"]}]}
>>>
>>>
>>> Anyone could help me?
>>>
>>> Regards from Canary Island
>>>
>>> Manuel Padron Martinez
>>
>
>


Mime
View raw message