2013-02-11 51 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); 
});