Я недавно столкнулся с той же проблемой. Однако мне удалось преодолеть эту проблему с помощью некоторых других логик (подробности приведены ниже), но я не мог понять причину, по которой findOneAndUpdate вставляет дубликаты записей в mongodb.
Вы можете преодолеть эту проблему, следуя логике.
Используйте findOne или findById вместо findOneAndUpdate , чтобы найти документ в вашей коллекции, а затем вручную обновить документ и запустить save () .
Вы можете иметь лучшую идею с этим фрагментом кода
return new Promise(function (resolve, reject) {
Model.findOne({
someCondition...
}, function (err, item) {
if (err) {
reject(err);
} else {
item.someArray.push({
someKeyValue...
});
item.save().then((result) => {
resolve(result)
}).catch((err) => {
reject(err)
});
}
}).catch((err) => {
reject(err)
});
});
Это не будет вставлять дубликаты. Однако, если вы узнали причину дублирования, обязательно обновите эту ветку.