使用mongoose中有多级关联情景,如
收藏 Collect中有图片的ID关联图片Picture结合: {pictureId : {type: Schema.ObjectId, ref: 'Picture'}}
图片Picture中有用户ID管理: {userId : {type: Schema.ObjectId, ref: 'User'}}
用户User: {name : {type: String}}
现在想获取收藏列表的时候显示图片的用户的名称,就是User.name
3.8版本的mongoose的populate只能通过Collect获取到Picture,而不能获取到Picture的User
业绩是说只能获取的userId的值(用户的ID,而不是对象)
4.5版本的mongoose支持deep-populate,也就是深度关联获取
可以嵌套populate获取关联对象的子关联对象
var query = CollectModel.find({});
query.populate({
path:'pictureId',
populate:{path:'userId'} //嵌套populate
});
query.exec(function (err, docs) {
console.log(docs);
});
官方文档:deep-populate