couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From svilen ...@svilendobrev.com>
Subject Re: View collation question
Date Fri, 29 Mar 2013 18:32:48 GMT
do these live in same table/database?

then it's possible in a view to have both user's-docs and
user's-group-docs, and fetch for key=user will give u the user and
all his groups.
something like (pseudocode)

 if doc.type=="user": emit( doc.id, doc)
 if doc.type=="group": 
	for u in doc.users: emit( u, doc)

querying this with key=userid will yield the user-doc and the
group-docs for that user.

depends on what u really need, u can make something similar..

see
http://wiki.apache.org/couchdb/EntityRelationship

if these live in separate databases, then would be 2 queries - one for
user, one for groups for that userid.

ciao
svilen

On Fri, 29 Mar 2013 10:56:02 -0700
Troy Martin <troy@scriptedmotion.com> wrote:

> I'm currently associating user documents with group documents like
> this:
> 
> {
>    "_id": "544f4718732b51506d9de60a4e000505",
>    "_rev": "137-f99f9a4aa5e3a4d48b76d98200b1f4fa",
>    "username": "spencer",
>    "firstName": "Spencer",
>    "lastName": "jones",
>    "emailAddress": "none@none.com",
>    "roles": [
>        "user"
>    ],
>    "type": "user",
>    "disabled": false,
>    "empId": "10"
> },
> 
> {
>    "_id": "3979684300c58a4c90c7c6e0d6035260",
>    "_rev": "58-0df6c24716cd1768f668399a96059692",
>    "type": "group",
>    "name": "marina",
>    "description": "",
>    "users": [
>        "544f4718732b51506d9de60a4e000505",
>        "63de6351a30879ee091b248c930a9254",
>        "8f87c698f119044890c5e788cd000c18",
>        "4b95a2e0ec42cb6d49efac7f52000e2c",
>        "8f87c698f119044890c5e788cd0019d7"
>    ]
> }
> 
> 
> When I want to edit a user my app fetches the user document and a
> list of all the groups in the system. It then loops through the
> groups and pulls out the ones the user is associated with by looping
> through the users array looking for the users _id number. That's a
> lot of looping…8-) I have to have a list of groups anyway so the user
> can select from them, but I'm wondering if I can use view collation
> to fetch the user and their associated groups in one request to
> increase efficiency? I've looked at some examples on view collation,
> but the ones I've seen show a one to one relationship between
> documents. Not sure if I can use it with my data structured this way.
> I've considered a joining document like a joining table from sql, but
> thought I'd see if there was a way to make this work as is.
> 
> Thanks,
> 
> Troy
> 
> 
> 

Mime
View raw message