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

Sådan opdateres MongoDB-dokumenter med arrays af underdokumenter

Der er et par måder at gøre dette på, jeg vil besvare punkt for punkt

Hent resultaterne for alle elever eller for en specifik elev (hent specifikt element i arrayet)

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

Tilføj/opdater/slet en specifik elevs score for et specifikt emne (i tilfælde af opdatering eller sletning, hent et specifikt element i scores[n].performance array; for at tilføje, føj til samme 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
    });

Jeg håber, det hjælper




  1. Sådan finder du MongoDB feltnavn på vilkårlig dybde

  2. mongodb forespørgsel undersæt af et array

  3. Spring Data:Unikt felt i MongoDB dokument

  4. Fjern et underdokument indlejret i et array i MongoDB