couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From 7zark7 <7za...@gmail.com>
Subject Re: One-sided 1-to-many relationship
Date Wed, 15 Sep 2010 21:25:27 GMT
Perfect!  Thanks!



On 9/15/10 2:18 PM, Kenneth Tyler wrote:
> I think this is the feature you want to use.
>
> from the wiki:
> Linked documents
>
> *This is a new feature in couchdb 0.11*
>
> If you emit an object value which has *{'_id': XXX}* then include_docs will
> fetch the document with id XXX rather than the document which was processed
> to emit the key/value pair.
>
> This means that if one document contains the ids of other documents, it can
> cause those documents to be fetched in the view too, adjacent to the same
> key if required.
>
> For example, if you have the following hierarchically-linked documents:
>
> [
> { "_id": "11111" },
> { "_id": "22222", "ancestors": ["11111"], "value": "hello" },
> { "_id": "33333", "ancestors": ["22222","11111"], "value": "world" }
> ]
>
> you can emit the values with the ancestor documents adjacent to them in the
> view like this:
>
> function(doc) {
>    if (doc.value) {
>      emit([doc.value, 0], null);
>      if (doc.ancestors) {
>        for (var i in doc.ancestors) {
>          emit([doc.value, Number(i)+1], {_id: doc.ancestors[i]});
>        }
>      }
>    }
>
>
> }
>
>
> more at http://wiki.apache.org/couchdb/Introduction_to_CouchDB_views
>
>
> ken tyler
>
> On Wed, Sep 15, 2010 at 2:10 PM, 7zark7<7zark7@gmail.com>  wrote:
>
>> Given doc type A and B:
>>
>> A has a 1-to-many relationship with B (each A knows of many Bs)
>> Each B can be known by many As, but does not know which.
>> A has an array of its known B keys.
>>
>> A doc:
>> {
>>   "_id": "...",
>>   "kind": "A",
>>   "b_IDs": ["...", "...", "...", "..."]
>> }
>>
>>
>> B doc:
>> {
>>   "_id": "...",
>>   "kind": "B"
>> }
>>
>>
>> If I know the key for A, how can I retrieve all related Bs in one view or
>> list call?
>> I'd like to avoid middle-ware that makes sequential calls.
>>
>> Thanks!
>>
>


Mime
View raw message