MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

So aktualisieren Sie MongoDB-Dokumente mit Arrays von Unterdokumenten

Es gibt ein paar Möglichkeiten, dies zu tun, die ich Punkt für Punkt beantworten werde

Die Punktzahlen für alle Schüler oder für einen bestimmten Schüler abrufen (ein bestimmtes Element im Punkte-Array abrufen)

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

Hinzufügen/Aktualisieren/Löschen der Punktzahl eines bestimmten Schülers für ein bestimmtes Fach (beim Aktualisieren oder Löschen ein bestimmtes Element im Array scores[n].performance abrufen; zum Hinzufügen an dasselbe Array anhängen. stark>

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

Ich hoffe, das hilft