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č.