Javascript Mongoose-在数组中填充对象

Javascript Mongoose-在数组中填充对象,javascript,node.js,mongodb,mongoose,mongoose-populate,Javascript,Node.js,Mongodb,Mongoose,Mongoose Populate,使用mongoose如何在数组中填充单个对象 例如: var SchoolSchema = new Schema({ classes: [{ name: String }] }); var StudentSchema = new Schema({ allocated_class: { type: ObjectId, ref: 'School' } }); mongoose.model('School', SchoolSchema); mongoose.mo

使用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")
   }]
}
最终结果应该是学生集合中填充了他们分配的班级名称。

试试这个

var StudentSchema = new Schema({
  name:{type: String, unique: true},
  allocated_class: [schoolSchema]
});
即使不是这样,也应该在模式中进行更改。
一所学校有许多班级,一个学生有许多班级,因此(新)班级模式可能是学校和学生之间的联系

您能否将问题包含在示例数据和预期结果中?您的
学校
ref被命名为
,而
学校
包含
,这令人困惑。我的编辑是否提供了任何澄清?谢谢。Population只适用于顶级文档,如
学校
,而不适用于子文档,如
类的元素
。是否有其他方法可以使其工作?也许改变模式?