Có một số cách để làm điều này, tôi sẽ trả lời từng điểm một
Truy xuất điểm cho tất cả học sinh hoặc cho một học sinh cụ thể (truy xuất phần tử cụ thể trong mảng điểm)
Class.findOne({ name: 'Grade 5 - Section A'})
.populate('scores.studentId')
.exec(function(err, class) {
if (err) throw err;
//now class.scores.studentId becomes ObjectStudent
//hence you have all scores for all students
});
Thêm / cập nhật / xóa điểm của một học sinh cụ thể, cho một môn học cụ thể (trong trường hợp cập nhật hoặc xóa, hãy truy xuất một phần tử cụ thể trong mảng điểm [n] .performance; để thêm, nối vào cùng một mảng.
Class.findOneAndUpdate({name: 'Grade 5 - Section A'
,'scores.studentId': ObjectId('5776bd36ffc8227405d364d2')
, 'scores.performance.subjectId' : ObjectId('577694ecbf6f3a781759c54a')}
, {$set: {scores.performance. score: 50}}
, function(err, data) {
if (err) throw err
});
Tôi hy vọng điều đó sẽ giúp