MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment mettre à jour des documents MongoDB avec des tableaux de sous-documents

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