我使用mongoose,nodejs有这样的架构:
var category = new Schema({
name: String,
parent: [{ type: ObjectId, ref: 'category', default: null }]
});
和类别集合我有2个这样的文件 文件1:
{
"_id" : "d3d4c44r43ce4366f563fg",
"name" : "document 1",
"parent" : null
}
文件2:
{
"_id" : "d3d4c65ygyb779676768p54",
"name" : "document 1",
"parent" : "d3d4c44r43ce4366f563fg"
}
如何使用mongoose中的populate从文档1中获取所有孩子。
答案 0 :(得分:0)
如果你知道你想要哪一个,你可以这样做:
使用parent_id
populate
)和populate('parent')
的孩子
//Assuming you know the parent id to populate (parent_id)
category.find({parent : parent_id}).populate('parent').exec(function(err,docs){...});
编辑:家长为空的所有文件的孩子
首先,找到parent
为null
的所有文档。对于每一个,populate
使用上述方法收集。
category.find({parent:null},function(err,results)
{
if(!err)
{
//for each parent, populate their children.
results.forEach(result,index,array)
{
//result._id is the parent id, use this to retrieve its child
category.find({parent : result._id}).populate('parent').exec(function(err,docs)
{
//use these docs however you want to use.
//For every parent different `docs` array will be there.
});
}
}
});