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

Mongoose-opdatering af flere dokumenter opdaterer ikke noget

Efter et par timers forsøg på at finde ud af, hvor fejlen var, og hvorfor den ikke opdaterede databasen, fandt jeg ud af, at den faktisk opdaterede databasen. Problemet var, at jeg tjekkede opdateringen i mongo shell, og efter at jeg havde opdateret den over nodejs post-anmodning, blev den ikke vist i shellen som opdateret. Men da jeg console.log() etiketterne, blev det opdateret. Så jeg undersøgte problemet nærmere, og jeg fandt ud af, at problemet ikke var mongo-skallen, men forkert brug af mongoose-kommandoopdateringen. Jeg manglede tilbagekaldsargumentet. Efter tilføjelse af tilbagekaldsfunktionen blev dataene opdateret i mongo-skallen med det samme.

Så i stedet for at gøre:

Label.update({'_id': { $in: post.labelIds }}, {$addToSet: {postIds:req.body.id}}, {multi: true})

Det må ikke glemmes at tilføje tilbagekald:

Label.update({'_id': { $in: post.labelIds }}, {$addToSet: {postIds:req.body.id}}, {multi: true}, function(err, affected) {
   if(err)
      console.log(err)
   else
      console.log(affected)
      // After successful update, redirect here to another page...

Eller som duplikatsvar foreslår at køre exec():

Label.update({'_id': { $in: post.labelIds }}, {$addToSet: {postIds:req.body.id}}, {multi: true}).exec()



  1. Undtagelse, der godkender MongoCredential og Uncategorized Mongo Db Exception

  2. Kan jeg lave en tekstforespørgsel med mongodb c#-driveren

  3. Reactivemongo serialiserer et kort til et BSONDocument

  4. Er der nogen måde at gendanne nyligt slettede dokumenter i MongoDB?