如何在节点js中使用populate

时间:2016-12-14 16:23:01

标签: node.js mongoose

我必须在我的数据中填写学生,

"attendances" : [ 
    {
        "_id" : ObjectId("5851702b9accfc6e70d55107"),
        "students" : [ 
            {
                "student" : ObjectId("5850e6d596d4de3c1f4a0614"),
                "_id" : ObjectId("5851702b9accfc6e70d55109"),
                "ispresent" : "No"
            },  }]

我的架构,

 attendances: [{
date: {
    type: String,
    default: ''
},
created_by: {
    type: Schema.ObjectId,
    ref: 'Employee'
},
students: [{
    student: {
        type: Schema.ObjectId,
        ref: 'Student'
    },
    ispresent: {
        type: String,
        default: ''
    }
}]

}],

 Attendance.findById(id).populate('attendances.students')

我尝试了上述方法但失败了。任何人都可以建议帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

您可以通过点符号编写人口谓词,同时深入挖掘对象数组以引用结束于Schema.Types.ObjectId类型的另一个有效模式,因此根据您提到的模式,您将查询如下:

 Attendance.findById(id).populate('attendances.students.student')