我在mongoose中做了一个findOneAndUpdate:
Item.findOneAndUpdate({_id: 12345}, updateDoc, function (err, updatedItem) {
//....
});
但是我想完全覆盖该文档。根据mongoose docs:
所有非原子操作名称的顶级键都被视为 设置操作:
无论如何,我可以覆盖这种行为,以便mongoose不会为顶级元素发出$ set操作,而是覆盖文档?
答案 0 :(得分:9)
最近添加了“覆盖”选项。它取代了整个文档,Mongo默认更新的方式。它的使用方式如下:
Item.findOneAndUpdate({_id: 12345}, updateDoc, {overwrite: true}, function(err, updatedItem) {
....
});
我在GitHub Issues区域找到了有关此功能的一些历史记录。