sql >> Database >  >> NoSQL >> MongoDB

Mongoose:atomaire FindOne-Or-Insert(), update bestaande instantie niet indien gevonden

U kunt $setOnInsert gebruiken in uw update-parameter zodat deze alleen van toepassing is in het geval van invoegen; waarbij de update een no-op wordt in het geval dat het document al bestaat:

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 }
)

Merk op dat u ook een unieke index moet maken over de velden die zijn opgenomen in uw filter en behandel vervolgens de mogelijkheid van een dubbele fout. Zie dit bericht voor de details waarom.




  1. updateMany gebaseerd op ander veld in mongodb

  2. Hoe filter ik om een ​​subset van een mangoestschema te retourneren?

  3. mislukt met fout 10068:ongeldige operator:$oid

  4. Efficiënt sorteren van de resultaten van een mongodb geospatiale query