自我在猫鼬中居住

时间:2016-08-24 14:17:17

标签: mongoose parent-child populate

我使用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中获取所有孩子。

1 个答案:

答案 0 :(得分:0)

如果你知道你想要哪一个,你可以这样做:

使用parent_id

查找具有所需父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){...});

编辑:家长为空的所有文件的孩子

首先,找到parentnull的所有文档。对于每一个,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.
            });
        }
    } 
});