我有父引用的模型树结构。换句话说,任何节点都可以存储节点父节点的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提供程序中建议一个正确的方法吗?
答案 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