sql >> Databáze >  >> NoSQL >> MongoDB

Mongoose aktualizace více dokumentů neaktualizuje nic

Po několika hodinách strávených snahou zjistit, kde je chyba a proč neaktualizuje databázi, jsem zjistil, že databázi skutečně aktualizoval. Problém byl v tom, že jsem kontroloval aktualizaci v mongo shellu a poté, co jsem ji aktualizoval přes žádost o příspěvek nodejs, se v shellu neobjevila jako aktualizovaná. Nicméně, když jsem console.log() štítky, byl aktualizován. Zkoumal jsem tedy problém dále a zjistil jsem, že problémem není mongo shell, ale nesprávné použití aktualizace příkazu mongoose. Chyběl mi argument zpětného volání. Po přidání funkce zpětného volání byla data v mongo shellu okamžitě aktualizována.

Takže místo toho:

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

Nesmíte zapomenout přidat zpětné volání:

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

Nebo jak duplicitní odpověď naznačuje spuštění exec():

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



  1. Existuje vysvětlující dotaz pro MongoDB Linq?

  2. Aktualizujte kolekci meteorů bez odstranění nebo přepsání existujících polí

  3. Regulární výraz pro přiřazení slov ve větě podle jejich předpony

  4. jak získat klíče, které neodpovídají konkrétnímu vzoru v redis?