You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@couchdb.apache.org by Manolo Padron Martinez <ma...@gmail.com> on 2009/03/03 15:29:31 UTC

Filtering with a pattern

Hi again:

Another newbie question.

I have some docs in this form:

{
  "Temperature":23.4,
  "Endurance":5,
  "Element":"Fe"
}

I would like to make a view that show all the docs that have some X
temperature, an endurance between Y and Z values and a W element. But the
ranged value could be any of the properties (or all properties)

I thought If I make a map function that emit an array of this kind (
["Temperature",23.4],["Endurance",5],["Element","Fe]]  )   for every
document I could filter it with startkey and endkey, but doesn't work as I
wish.

Anyone knows how can I make a view that let me filter in that way?

Thanks in advance

Regards from Canary Islands

Manuel Padron Martinez

Re: [user] Filtering with a pattern

Posted by Paul Davis <pa...@gmail.com>.
On Tue, Mar 3, 2009 at 10:44 AM, Wout Mertens <wm...@cisco.com> wrote:
> I think in this case you'll have to create a view for each property that you
> want to filter on first.
>
> So if you want to first filter on temperature and then on endurance, I would
> emit [23.4,5,"Fe"]. I think though that "Fe" might be the actualy value so
> you might instead be emitting [23.4,5],"Fe".
>
> You can then query for startkey=[20,0]&endkey=[24,9999] and it would give
> you all elements with temperatures between 20 and 24 and all their
> endurances.
>
> Wout.
>

Wout is right on track here, but I'd suggest slightly different start keys like:

startkey=[20,null]&endkey=[24,{}]

HTH,
Paul Davis

> On Mar 3, 2009, at 3:29 PM, Manolo Padron Martinez wrote:
>
>> Hi again:
>>
>> Another newbie question.
>>
>> I have some docs in this form:
>>
>> {
>>  "Temperature":23.4,
>>  "Endurance":5,
>>  "Element":"Fe"
>> }
>>
>> I would like to make a view that show all the docs that have some X
>> temperature, an endurance between Y and Z values and a W element. But the
>> ranged value could be any of the properties (or all properties)
>>
>> I thought If I make a map function that emit an array of this kind (
>> ["Temperature",23.4],["Endurance",5],["Element","Fe]]  )   for every
>> document I could filter it with startkey and endkey, but doesn't work as I
>> wish.
>>
>> Anyone knows how can I make a view that let me filter in that way?
>>
>> Thanks in advance
>>
>> Regards from Canary Islands
>>
>> Manuel Padron Martinez
>
>

Re: [user] Filtering with a pattern

Posted by Wout Mertens <wm...@cisco.com>.
I think in this case you'll have to create a view for each property  
that you want to filter on first.

So if you want to first filter on temperature and then on endurance, I  
would emit [23.4,5,"Fe"]. I think though that "Fe" might be the  
actualy value so you might instead be emitting [23.4,5],"Fe".

You can then query for startkey=[20,0]&endkey=[24,9999] and it would  
give you all elements with temperatures between 20 and 24 and all  
their endurances.

Wout.

On Mar 3, 2009, at 3:29 PM, Manolo Padron Martinez wrote:

> Hi again:
>
> Another newbie question.
>
> I have some docs in this form:
>
> {
>  "Temperature":23.4,
>  "Endurance":5,
>  "Element":"Fe"
> }
>
> I would like to make a view that show all the docs that have some X
> temperature, an endurance between Y and Z values and a W element.  
> But the
> ranged value could be any of the properties (or all properties)
>
> I thought If I make a map function that emit an array of this kind (
> ["Temperature",23.4],["Endurance",5],["Element","Fe]]  )   for every
> document I could filter it with startkey and endkey, but doesn't  
> work as I
> wish.
>
> Anyone knows how can I make a view that let me filter in that way?
>
> Thanks in advance
>
> Regards from Canary Islands
>
> Manuel Padron Martinez