查询具有多个关系级别的mongoose模式

时间:2013-12-03 08:27:09

标签: mongodb mongoose

假设我有以下Schema,它是一个简单的用户模式,有一个朋友列表:

var userSchema = mongoose.Schema({
    name:           { type: String, required: true },
    friends:        [ { type: Schema.Types.ObjectId, ref: 'User'} ]
});

var User = mongoose.model('User', userSchema);

我知道我可以执行以下操作来查询用户甚至查询某个用户的朋友:

User
    .find({name: 'fooUser'}
    .populate('friends')
    .exec(function(error, result) {
      //do something...
    });

我目前正忙着查询朋友关系到任意“深度”的任务,例如用户'fooUser'的朋友的朋友。

这个问题还涉及对多个关系级别的任何关系查询(涉及任意模型)。

你对我有什么提示吗? 谢谢!

1 个答案:

答案 0 :(得分:1)

User
    .find({name: 'fooUser'}
    .populate('friends')
    .exec(function(error, result) {
     User.populate(result,{path:"friends.friendsoffriend",model:'friendsoffriend'},function(err,result){
     //this way you can go deep and deeper

})
    });

https://github.com/LearnBoost/mongoose/wiki/3.6-Release-Notes#added-documentpopulatedpath