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

Mongoose:atomic FindOne-Or-Insert(), neaktualizovat existující instanci, pokud je nalezena

Můžete použít $setOnInsert ve vašem aktualizačním parametru, takže se použije pouze v případě vkládání; s aktualizací se stane neoperativní v případě, kdy dokument již existuje:

return await Foo.findOneAndUpdate(
  filter,                 // find a document with that filter
  {$setOnInsert: fooDoc}, // document to insert when nothing was found
  { upsert: true, new: true, runValidators: true }
)

Nezapomeňte, že byste také měli vytvořit jedinečný index pro pole obsažená ve vašem filter a pak řešit možnost duplicitní chyby. Viz tento příspěvek pro podrobnosti proč.




  1. MongoDB Převést řetězec na pole

  2. příklady ovladačů mongodb-erlang Erlang

  3. Jaký je rozdíl mezi findOneAndUpdate a findOneAndReplace?

  4. Predis with laravel 5.5 Ve fondu nejsou k dispozici žádná připojení v Aggregate/RedisCluster.php:337