Il y a plusieurs façons de le faire, je vais répondre point par point
Récupérer les scores de tous les élèves ou d'un élève spécifique (récupérer un élément spécifique dans le tableau des scores)
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
});
Ajouter/mettre à jour/supprimer le score d'un élève spécifique, pour une matière spécifique (en cas de mise à jour ou de suppression, récupérer un élément spécifique dans le tableau scores[n].performance ; pour ajouter, ajouter au même tableau.
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
});
J'espère que ça aide