MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Mongoose aktualizuje wiele dokumentów niczego nie aktualizuje

Po kilku godzinach spędzonych na próbach ustalenia, gdzie był błąd i dlaczego nie aktualizował bazy danych, dowiedziałem się, że faktycznie zaktualizował bazę danych. Problem polegał na tym, że sprawdzałem aktualizację w powłoce mongo i po zaktualizowaniu jej przez żądanie post nodejs, nie pojawiła się w powłoce jako zaktualizowana. Jednak kiedy ja console.log() etykiety, został on zaktualizowany. Więc zbadałem problem dalej i dowiedziałem się, że problem nie dotyczył powłoki mongo, ale nieprawidłowego użycia aktualizacji polecenia mongoose. Brakowało mi argumentu wywołania zwrotnego. Po dodaniu funkcji zwrotnej dane zostały natychmiast zaktualizowane w powłoce mongo.

Więc zamiast robić:

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

Nie można zapomnieć o dodaniu wywołania zwrotnego:

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...

Lub jako zduplikowana odpowiedź sugeruje uruchomienie exec():

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



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Agregacja MongoDB z sumą wartości tablicy

  2. Zapobieganie wyścigom związanym z bazą danych w Node.js

  3. Zapytanie o zakres dla paginacji MongoDB

  4. Sortowanie agregatów Mongodb i limitowanie w ramach grupy

  5. Bulk Upsert ze sterownikiem MongoDB Java 3.0