Используя последний драйвер (> версия 2), вы будете использовать findOneAndUpdate , поскольку findAndModify
устарел. Новый метод принимает 3 аргумента, объект filter
, update
(который содержит ваши свойства по умолчанию, которые должны быть вставлены для нового объекта) и options
, где вы должны указать операцию upsert.
Используя синтаксис обещания, он выглядит так:
const result = await collection.findOneAndUpdate(
{ _id: new ObjectId(id) },
{
$setOnInsert: { foo: "bar" },
},
{
returnOriginal: false,
upsert: true,
}
);
const newOrUpdatedDocument = result.value;