The method I use is to have a field called "path", which contains a list of
IDs, and the last item in the list/array is the current document's ID. The
downside is that you have to assign the IDs yourself, but the upside is
that it's easy to query.

---
Keith Gable
A+ Certified Professional
Network+ Certified Professional
Web Developer



On Mon, Jan 2, 2012 at 2:57 PM, Jo-Erlend Schinstad <
joerlend.schins...@gmail.com> wrote:

> Den 02. jan. 2012 18:04, skrev Kevin R. Coombes:
>
>  Take this suggestion with a grain of salt, since I haven't actually tried
>> it and am just making things up....
>>
>> If your structure is really a tree, then the location of every node is
>> characterized by a unique path back to the root node, You could save the
>> entire path in each object as a list:
>>    [parent, grandparent, great-grandparent, ..., rootnode]
>> One view would simply return this entire list for each object.
>> A second view would just give back the parent node.
>> Either view can be used (with appropriate logic in the client) to
>> reconstruct the entire tree. However, you could also easily create
>> auxiliary views (e.g., grandparent) depending on your needs.
>>
>> This organization makes querying the tree relatively easy.  However, it
>> will have _terrible _performance if you do a lot of surgery on the tree,
>> lopping off branches and reattaching them in different places.
>>
>>
> That was my original thought. I  wanted to do something like key [0, 5,
> 4,2] which would mean the sixth child of the first top-level node, and the
> fifth child of that node and the third of it.
>
> This would work well, and I would get the tree in one go, organized and
> nice. The problem is that the tree must be reorganizable. In that model, if
> moved one node, then I would have to update all the following documents. If
> there's a million rows in the tree, then I would need something like
> 999.990+ http requests... :)
>
> Further, one of primary goals is replication. It could never work. The
> internet janitor would hit me in the back of the head with a wrench.
> However, for something like a family tree or a blog, where something will
> forever be a response to something else, that would work nicely.
>
> So what I'm doing now, is that I'm just retrieving the data from the
> database and organising it on the client. It's not a comfortable solution,
> I think. It's not elegant, but if it's the only possible solution, then it
> doesn't really matter if it's elegant or not. :)
>
> In other words, I'm still very much looking for a good way to model a
> flexible tree in a couchdb. Any suggestions are highly welcome.
>
> Jo-Erlend Schinstad
>

Reply via email to