Sounds like using two views and a multiview will work (this could be one view with complex keys - a megaview).
http://github.com/normanb/couchdb/blob/trunk/README.multiview Norman On Fri, Sep 17, 2010 at 8:08 AM, Kenneth Tyler <[email protected]> wrote: > Sorry, > I missed an important part of your question. > Two views would work. It might be that building a composite key would also > work, since you have the domain information in all the user documents. > function(doc){if(doc.type=='user'){emit([doc.domain,doc.status],doc)} > > and then query the view looking for [test.com,1] > > ken tyler > > On Fri, Sep 17, 2010 at 6:56 AM, Kenneth Tyler <[email protected]> wrote: > >> Simon, >> I think this is a case where the flat document structure of couch documents >> makes things much simpler than in SQL. >> >> If you had a view like this: >> function(doc){if(doc.type=='user'){emit(doc.status,doc)} >> then it would return all the user documents with their status as their key >> and you could use ?key="1" (i think the quotes are necessary) to get all >> the users whose status is 1 >> >> if you want to do the same thing for domains, you just write a "domain" >> view that returns status as the key >> >> ken tyler >> >> >> On Fri, Sep 17, 2010 at 6:04 AM, Simon Woodhead < >> [email protected]> wrote: >> >>> Hi folks, >>> >>> I'm pretty green with views and have a need to do a join with results >>> from one side returned if a condition is met on the other. In SQL I'd >>> do: >>> >>> select * from child join parent on child.id=parent.id where >>> parent.status=1; >>> >>> I've read the 'join' documentation (e.g. >>> http://www.cmlenz.net/archives/2007/10/couchdb-joins) and can return >>> documents of multiple types with matching keys ok. What I can't do is >>> do the same but only if the parent matches a condition. >>> >>> Specifically, my data is like: >>> >>> >>> {"45a6951b34a6f45bd44fd169c0003f9c","_rev":"1-6c88818b43d562c45e452bf00db06ee2","type":"domain","domain":" >>> test.com","status":1}, >>> >>> {"_id":"45a6951b34a6f45bd44fd169c00046db","_rev":"1-37eaf0c4944dac9f5fe07b25c0b68b1d","type":"domain","domain":" >>> test2.com","status":0}, >>> >>> {"_id":"45a6951b34a6f45bd44fd169c00053d9","_rev":"3-729f46c86ee4984941939c65787126fb","type":"user","domain":" >>> test.com","user":"foo","password":"test123"}, >>> >>> {"_id":"45a6951b34a6f45bd44fd169c00060c8","_rev":"1-46997eba12e7adbb6e9266a1fe83c42d","type":"user","domain":" >>> test2.com","user":"bar","password":"test123"} >>> >>> I want to be be able to query a view by domain and see all users for >>> it if the status is 1. So in this case I'd see users for test.com but >>> not for test2.com. >>> Any help would be appreciated. >>> >>> Thanks! >>> Simon >>> -- >>> ***** Email confidentiality notice ***** >>> >>> This message is private and confidential. If you have received this >>> message in error, please notify us and remove it from your system. >>> >>> >>> Simwood eSMS Limited is a limited company registered in England and Wales. >>> Registered number: 03379831. Registered office: c/o HW Chartered >>> Accountants, Keepers Lane, The Wergs, Wolverhampton, WV6 8UA. Trading >>> address: Falcon Drive, Cardiff Bay, Cardiff, CF10 4RU. >>> >>> >>> >> >
