Możesz użyć $setOnInsert
w parametrze aktualizacji, aby miał zastosowanie tylko w przypadku wstawiania; aktualizacja staje się zakazem w przypadku, gdy dokument już istnieje:
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 }
)
Pamiętaj, że powinieneś również utworzyć unikalny indeks nad polami zawartymi w twoim filter
a następnie obsłużyć możliwość zduplikowanego błędu. Zobacz ten post
po szczegóły dlaczego.