2013-02-11 49 views
0

我有一个像猫鼬查询用户图形

name : { 
    type : String 
}, 
organizations : [{ 
    type : mongoose.Schema.ObjectId, 
    ref : 'Organization' 
}] 

用户和类似组织:

name : { 
    type : String 
}, 
members : [ 
    user : { 
    type : mongoose.Schema.ObjectId, 
    ref : 'User' 
    }, 
    role : { 
    type : String 
    } 
] 

如果我想每一个用户的用户可以达到,说所有的构件中的用户他的组织名单,我如何做一个查询(填充用户会很好)?

要得到所有组织我想过:

Organization.find({ '_id' : { $in: user.organizations } }).exec(function (err, organizations) { });

我想避免多次查询,任何帮助表示赞赏!

+0

将是很有益 – pfried 2013-02-12 13:19:53

回答

0

我这样做对所有组织用户在查询时,填充所有客户领域,并将它们合并成一个阵列,我发送一个响应:

Organization.find({ '_id' : { $in: userOrganizations } }).populate('owner').populate('members.user').exec(function (err, organizations) { 

    var accounts = []; 

    organizations.forEach(function (organization) { 
     organization.members.forEach(function (member) { 
      accounts.push(member.user); 
     }); 

     accounts.push(organization.owner); 
    }); 

    res.send(accounts); 
});