sql >> Database >  >> NoSQL >> MongoDB

Een record bijwerken met mangoest

U kunt &elementMatch . gebruiken om het wensseizoen in de array te vinden, en in het setField-object kun je de positionele $ gebruiken operator die het element identificeert dat overeenkomt met de zoekopdracht.

Het probleem is dat als het geen seizoen vindt dat overeenkomt met het season_number , wordt het document niet bijgewerkt. In dit geval kun je een andere update-query instellen om dit seizoen toe te voegen in de seasons array.

router.put('/api/shows/:id/seasons/:sid', function(req, res){

  var query = {
    "_id": req.params.id,
    "seasons": { 
      $elemMatch: { 
        "season_number": req.params.sid 
      } 
    }
  }

  var setField = {
    $addToSet: {
      "seasons.$.episodes": req.body
    }
  }

  TV.findOneAndUpdate(query, setField, {upsert:true}, function(err, results){
    if (err && err.code == 16836) { // no document was matched
      var season = {
        "season_number": req.params.sid
        "episodes": [ req.body]
      }
      TV.findOneAndUpdate({"_id": req.params.id}, {$push: {"seasons": season}} , function(err, result) {
          console.log("Inserted document in array");
          res.json(result)
      }); 
    }
    else if (err){
       console.log(err);
       res.status(500).send('Something wrong!');
    }
    else {
       console.log(setField);
       res.json(results)
    }
  })
})

Je kunt hier zien enkele mongodb array-operators.

Ik hoop dat het helpt.




  1. groep in mongo exclusief null-waarden

  2. Gegevens ophalen van mongodb via nodejs en uitdrukken naar een html-pagina

  3. Is er een manier om recent verwijderde documenten in MongoDB te herstellen?

  4. in React roep ik twee lijsten naar pagina van mongo en ik wil op één klikken om te filteren wat in andere wordt getoond