2015-10-20 160 views
0

使用貓鼬如何填充數組中的單個對象?貓鼬 - 在數組中填充對象

例如:

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") 
    }] 
} 

最終的結果應該是學生收集填充其分配的類的名稱。

+0

您能否[編輯]您的問題以包含示例數據和預期結果?令人困惑的是你的'School' ref被命名爲'class',而'School'則包含'classes'。 – JohnnyHK

+0

我的編輯是否提供任何澄清?謝謝。 – Eddie

+0

人口僅適用於像「School」這樣的頂級文檔,而不適用於像「classes」這樣的子文檔。 – JohnnyHK

回答

0

試試這個

var StudentSchema = new Schema({ 
    name:{type: String, unique: true}, 
    allocated_class: [schoolSchema] 
}); 

即使不喜歡這樣 - 你應該在架構的變化。 一所學校有很多班級,一名學生有很多班級,所以(新)班級綱要可能是學校和學生之間的聯繫。