incubator-couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jan Lehnardt <...@apache.org>
Subject Re: Views using JSON Arrays
Date Thu, 03 Jul 2008 14:03:46 GMT
To pull that off you'd need to have every single combination
of tags in the index which I don't see happening. Maybe
with the reduce, I don't know.

what you can do is emit([tag1, tag2], null); and then query
with key=[tag1, tag2]]; and that would work the octopus
and hockey-case you line out here, but not in general.

Cheers
Jan
--

On Jul 3, 2008, at 15:52, Brad King wrote:

> Might be a hack, but would a collated view work for getting two  
> arbitrary tags?
>
> function (doc) {
>  for(var i=0; i<doc.Tags.length; i++)
>    emit([doc.Tags[i], doc.Tags[i]], null);
>
> then you pass in ?key=["octopus","hockey"]
>
>
> On Thu, Jul 3, 2008 at 9:15 AM, Jan Lehnardt <jan@apache.org> wrote:
>>
>> On Jul 3, 2008, at 15:01, Bradford Winfrey wrote:
>>
>>> Hello everyone, been stalking the mailing list for a while and  
>>> thought
>>> this might be worthy of a post as I was asked to solve it, yet, I  
>>> couldn't!
>>>
>>> Let's take the classic blog example document with the following
>>> fields/values:
>>>
>>> "_id": "1f2fc3955b91aed5e7369f0b0ba8214e",
>>> "_rev": "1226709986",
>>> "Author": "Bradford",
>>> "Type": "Post",
>>> "Body": "Just mentioning this for a sample blog post.",
>>> "PostedDate": "2008-07-02T23:22:12-04:00",
>>> "Subject": "My Fine Blog Post",
>>> "Tags": ["octopus","hockey","squidward","bradford","recreation"]
>>>
>>> Next, I'd like to find each blog post that contains ANY of the  
>>> following
>>> tags ["octopus","hockey"].  Now, generally speaking this isn't so  
>>> bad.  We
>>> could write a simple view:
>>> function (doc) {
>>> if (doc.Type == 'Post') {
>>>  for (var i = 0;i < doc.tags.length; i++) {
>>>    emit(doc.tags[i],doc);
>>>  }
>>> }
>>> }
>>>
>>> We would get back each one of our tags as a key, yea?  Only if we  
>>> supplied
>>> one at a time.  So how does one go about supplying a range, array  
>>> (not sure
>>> what we'd call it here) of keys to be searched on?
>>> http://...?key=["octopus","hockey"] maybe?  I'm unsure of the plan  
>>> of
>>> attack for such a thing.  Maybe I'm just going about it in the wrong
>>> direction.  Any thoughts?
>>
>> have a look at the bottom of http://wiki.apache.org/couchdb/HttpViewApi
>> for the view query options. Specifically the startkey= and endkey=  
>> ones.
>> Note that you only get consecutive ranges with that. To retrieve  
>> arbitrary
>> tags, you'd need to run a query per tag with the key= option.
>>
>> Cheers
>> Jan
>> --
>>
>


Mime
View raw message