Hi Arun,
I'm even newer to couch. How I would approach your problem...
Start a list with the ID of B.
Step down the list with current element x until there are no more elements.
find the ids of all children of e (x.parentID = e._id)
for each id found
if it is not in the list, append it to the list
else (your tree is cyclic).
delete all elements in the list.
To work this through:...
Start with a list of {B}.
The first loop will look for children of B, find C and E and add them to
the list
giving {B,C,E}
Next loop, will look for the children of C, and finds none
Then it looks for the children of E, finds F and adds it to the list
(now {B,C,E,F})
Last cycle, it looks for the children of F and finds none.
Then it finds no element on the list to process, so it deletes all ids
in the list {B, C, E, F }
You may have to write your own code to get the next element from the
list. Many built-in routines will get confused by the additions.
To provide a consistent view for others, you may wish to consider the
order you delete them in. If you have deleted the parent first, others
will fail to reach it from the child! You can delete child-first by
working back down the list.
Don't forget the check that the id is not already in the list. If you
miss this, and the tree ever has a cycle, your program will blow up with
an out of memory error.
Regards
Ian
On 27/05/2010 06:21, Aun... สุวพรหม wrote:
in my design , i just keep parent id of each documents.
I design document in couchdb to have relation something like
directory
|
A---------D
|
B---------C
|
|
E ------F
No virus found in this incoming message.
Checked by AVG - www.avg.com
Version: 9.0.819 / Virus Database: 271.1.1/2897 - Release Date: 05/26/10
07:25:00