可以填充两个级别?

时间:2015-04-01 00:01:12

标签: node.js mongodb mongoose

说我有如下的馆藏/文件:

问题集:

{
   _id: ObjectId("0000"),
   title: "test question",
   survey: ObjectId("1234") //abbreviated for question assume this is a legit object id
}

调查收集:

{
   _id: ObjectId("1234"),
   title: "survey title!",
   user: ObjectId("5678")
}

用户集合:

{
   _id: ObjectId("5678"),
   Name: "Abe"
}

有没有办法让我打电话:

questions.findOne({_id: "0000"}).populate("survey.user")

获取用户信息以及问题?我知道我可以填充question的直接父母,但我很好奇是否可以为祖父母做。

2 个答案:

答案 0 :(得分:1)

你需要分两步完成;首先填充survey,然后使用对Model.populate的单独调用填充survey.user

questions.findOne({_id: '0000'})
    .populate('survey')
    .exec(function(err, question) {
        questions.populate(
            question,
            { path: 'survey.user', model: 'User'},
            function(err, question) {...});
    });

答案 1 :(得分:0)

我猜最好是嵌套在顶部,并将其作为对象

 Court.
  findOne({ name: 'Val' }).
  populate({
    path: 'events',
    populate: { path: 'authorId' }
  }); 

http://mongoosejs.com/docs/populate.html#deep-populate