sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongoose:atomic FindOne-Or-Insert(), uppdatera inte befintlig instans om den hittas

Du kan använda $setOnInsert i din uppdateringsparameter så att den bara gäller i infogningsfallet; med uppdateringen blir en no-op i de fall där dokumentet redan finns:

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

Observera att du också bör skapa ett unikt index över fälten som ingår i ditt filter och sedan hantera risken för ett dubblettfel. Se det här inlägget för detaljerna varför.




  1. Node js Mongodb Query NumberLong

  2. JasperFillManager.fillReport och mongo?

  3. Att använda sed på variabeln xargs fungerar inte inuti skalexpansion

  4. Mongoose-fråga för att sortera huvuddokument och underdokument efter särskilt fält