如何在MongoDB中检索文件的树状结构的所有节点?

时间:2018-04-19 12:40:44

标签: node.js mongodb mongoose tree

我有父引用的模型树结构。换句话说,任何节点都可以存储节点父节点的id,如下所示:

{ 
   _id: "1"
},
{ 
   _id: "2",
   _parent: "1"
},
{ 
   _id: "3",
   _parent: "1"
}

我想要实现的是通过提供节点ID来检索所有节点(包括父节点本身)。对于上面的结构,我想得到如下内容:

getJSON({_id: "1"}, function (flat) {
    // flat
    // [{_id: 1}, {_id: 2}, {_id: 3}]
});

可以在NodeJS和mongoose提供程序中建议一个正确的方法吗?

1 个答案:

答案 0 :(得分:0)

对于任何有兴趣的人,我发现this方法可以解决我的任务。

var descendants=[]
var stack=[];
var item = db.categoriesPCO.findOne({_id:"Cell_Phones_and_Accessories"});
stack.push(item);
while (stack.length>0){
    var currentnode = stack.pop();
    var children = db.categoriesPCO.find({parent:currentnode._id});
    while(true === children.hasNext()) {
        var child = children.next();
        descendants.push(child._id);
        stack.push(child);
    }
}


descendants.join(",")
//Cell_Phones_and_Smartphones,Headsets,Batteries,Cables_And_Adapters,Nokia,Samsung,Apple,HTC,Vyacheslav