sql >> Database teknologi >  >> NoSQL >> MongoDB

Mongoose:atomic FindOne-Or-Insert(), opdater ikke eksisterende instans, hvis den findes

Du kan bruge $setOnInsert i din opdateringsparameter, så den kun vil gælde i indsætningssagen; med opdateringen bliver en no-op i det tilfælde, hvor dokumentet allerede eksisterer:

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

Bemærk, at du også skal oprette et unikt indeks over felterne inkluderet i dit filter og derefter håndtere muligheden for en dubletfejl. Se dette indlæg for detaljerne hvorfor.




  1. @DBRef trækker ikke dataene, når du bruger Spring Data Mongo

  2. MongoDB til kommerciel brug

  3. SyntaxError:ugyldigt ejendoms-id - MongoDB

  4. MongoDB Aggregation Query at Count