【发布时间】:2016-10-08 01:42:15
【问题描述】:
项目组架构:
var ProjectGroupSchema = new Schema({
projectGroupId : String,
title : String
});
项目架构:
var ProjectSchema = new Schema({
title : {type : String, default : '', required : true},
group : {type: String, ref: 'ProjectGroup' },
subscribers : [{type: String, ref: 'User' }]
});
用户架构:
var UserSchema = new Schema({
userId : {type: String, require: true},
firstName : {type: String, required: true},
lastName : {type: String, required: true},
});
然后我可以做以下人口:
project.findById(req.projectId})
.populate('subscribers')
.populate('group')
.exec(function(err, project){
console.log(project);
});
请注意,引用字段不是对象 ID。
在此示例中,项目架构具有项目组和订阅者的参考字段,这使得上述人口成为可能。
如果我想获取一个 ProjectGroup 对象,该对象包含该组下的所有项目,并且每个项目都包含其订阅者,该怎么办?
我想说我正在寻找“反向”填充,即根据子架构中定义的引用填充父对象。 目前我使用异步先查询ProjectGroup,然后根据projectGroupId查询项目。
谢谢!
【问题讨论】:
-
什么是
projectGroupId?ProjectSchema对象的 ID? -
projectGroupId是String类型的ProjectGroup的唯一标识。
-
也许我来晚了,但你可以看看虚拟人口
标签: node.js mongoose mongoose-populate