Ci sono alcuni modi per farlo, risponderò punto per punto
Recupera i punteggi per tutti gli studenti o per uno studente specifico (recupera un elemento specifico nella matrice dei punteggi)
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
});
Aggiungi/ aggiorna/ elimina il punteggio di uno studente specifico, per una materia specifica (in caso di aggiornamento o eliminazione, recuperare un elemento specifico nell'array scores[n].performance; per aggiungere, aggiungere allo stesso array.
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
});
Spero di esserti stato d'aiuto