MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come aggiornare i documenti MongoDB con array di documenti secondari

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