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.