On 30 November 2011 21:49, Rob Crowell wrote: > I suppose it would be possible to make multiple queries, using > startkey and endkey to pull out the ranges. > > 1. Sort the "bad" tags: (BROKEN_IMAGE, OFFENSIVE_IMAGE) > 2. For each bad tag, request documents: >    i. Query 1: >        startkey = [] >        endkey = ["BROKEN_IMAGE"] > >    ii. Query 2: >        startkey = ["BROKEN_IMAGE", {}] >        endkey = ["OFFENSIVE_IMAGE"] > >    iii. Query 3: >        startkey = ["OFFENSIVE_IMAGE", {}] >        endkey = [{}] > > Requires making N+1 queries, which for a fairly small list wouldn't be too bad. > > On Wed, Nov 30, 2011 at 3:10 PM, Rob Crowell wrote: >> Hey everyone, view question here. >> >> I've got couch records that represent images.  They may have any >> number of tags (from zero to hundreds).  However, while there are >> thousands of tags in the dataset, there are only a couple that are >> considered "bad" (BROKEN_IMAGE, BLANK_IMAGE, etc.)  Here's an example >> document: >> >> { >>    _id: ..., >>    url: "http://example.org/whatever.png", >>    tags: ["OUTDOORS", "BEACH", "RED_DRESS"] >> } >> >> I wrote a view to emit documents that don't have these "bad" tags by >> hard-coding the list of bad tags and checking every tag against this >> list.  If none of the tags are bad, then emit the document. >> >> However, a user may also specify tags that he doesn't like >> (OFFENSIVE_IMAGE, DENVER_BRONCOS, whatever).  Is there any good way to >> build a view around this idea ("show me all documents that don't have >> a set of tags") short of defining a custom view (with their own "bad" >> tags list) for every user? >> >> I could do this filtering client-side of course, but if I wanted to >> generate an exhaustive list of matching documents (for a report or >> something similar) then it would be a lot of work.  I'm stumped at the >> moment.  Thanks for any suggestions! >> foo AND bar NOT baz CONTAINS beer Classic use cases for couchdb-lucence or elasticsearch. A+ Dave