我在mongoose的findOneAndUpdate中遇到了问题。案例是我通过查找来更新文档。查询如下:
UserModel.findOneAndUpdate({
individualId: 'some id'
}, {
$push: {
supporterOf: 'some string'
}
})
'supporterOf'是UserModel的ref,其类型是'ObjectId'。
我在这里面临的问题是,“某些字符串”在文档中的“supporterOf”下被推送两次。
任何人都可以告诉我如何在文档中推送数组元素?
我最近遇到了同样的问题。但是,我设法通过其他一些逻辑(下面给出的详细信息)克服了这个问题,但无法理解为什么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)
});
});
这不会插入重复的项目。但是,如果您了解重复背后的原因,必须更新此线程。