sql >> Base de Datos >  >> NoSQL >> MongoDB

Cómo actualizar documentos MongoDB con matrices de subdocumentos

Hay algunas formas de hacer esto. Responderé punto por punto

Recuperar los puntajes de todos los estudiantes o de un estudiante específico (recuperar un elemento específico en la matriz de puntajes)

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
});

Agregar/actualizar/eliminar la puntuación de un estudiante específico, para una materia específica (en caso de actualizar o eliminar, recupere un elemento específico en la matriz de puntajes[n].rendimiento; para agregar, agregue a la misma matriz.

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
    });

Espero que eso ayude