【发布时间】:2016-01-19 05:04:05
【问题描述】:
如何使用 mongoose 在数组中填充单个对象?
例如:
var SchoolSchema = new Schema({
classes: [{
name: String
}]
});
var StudentSchema = new Schema({
allocated_class: {
type: ObjectId,
ref: 'School'
}
});
mongoose.model('School', SchoolSchema);
mongoose.model('Student', StudentSchema);
Student.find({}).populate("allocated_class").exec();
在上面的示例中,如何在查找所有学生时填充一个班级的名称?
示例数据:
学生
{
"allocated_class" : ObjectId("561e36540fc3c18b749d65e1"),
}
学校
{
"_id" : ObjectId("561e36320fc3c18b749d65e0"),
"classes" : [
{
"name" : "Class 1",
"_id" : ObjectId("561e36540fc3c18b749d65e1")
}]
}
最终结果应该是填充了他们分配的班级名称的学生集合。
【问题讨论】:
-
您能否edit 您的问题包含示例数据和预期结果?令人困惑的是,您的
School引用被命名为class而School包含classes。 -
我的编辑是否提供了任何澄清?谢谢。
-
Population 仅适用于像
School这样的顶级文档,而不适用于像classes的元素这样的子文档。 -
有没有其他方法可以让它工作?也许改变架构?
标签: javascript node.js mongodb mongoose mongoose-populate