MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Актуализирането на множество документи от Mongoose не актуализира нищо

След няколко часа, прекарани в опити да разбера къде е грешката и защо не се актуализира базата данни, открих, че всъщност актуализира базата данни. Проблемът беше, че проверявах актуализацията в mongo shell и след като я актуализирах през nodejs post request, тя не се появи в shell като актуализирана. Когато обаче console.log() етикетите, той беше актуализиран. Така че проучих проблема допълнително и открих, че проблемът не е обвивката на mongo, а неправилното използване на актуализация на командата mongoose. Липсваше ми аргументът за обратно извикване. След добавяне на функцията за обратно извикване, данните бяха актуализирани незабавно в mongo shell.

Така че вместо да правите:

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

Не трябва да се забравя да добавите обратно извикване:

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

Или както предлага дублираният отговор, изпълнявайки 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. Използвайте $gte и <e оператор mongo, ако датата е в низов формат в mongodb

  2. Актуализирането на множество документи от Mongoose не актуализира нищо

  3. Поддържа ли Spring Data MongoDb оператор за агрегиране на масив $filter?

  4. Mongodb намери създадени резултати по дата днес

  5. странна грешка при mongodb и mongoose:не master и slaveOk=false грешка