Anda dapat menggunakan $setOnInsert
di parameter pembaruan Anda sehingga hanya akan berlaku dalam kasus penyisipan; dengan pembaruan menjadi larangan jika dokumen sudah ada:
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 }
)
Perhatikan bahwa Anda juga harus membuat indeks unik di atas bidang yang disertakan dalam filter
dan kemudian menangani kemungkinan kesalahan duplikat. Lihat postingan ini
untuk detail alasannya.