Javascript Mongoose更新完全替换以前的文档
我正在尝试更新我的文档,以删除我正在测试的几个字段。在前端,我删除了以下字段:Javascript Mongoose更新完全替换以前的文档,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我正在尝试更新我的文档,以删除我正在测试的几个字段。在前端,我删除了以下字段: 删除myObject.myField; 因此,当我在mongoosefindByIdAndUpdate之前查看它时,它确实没有这些字段,然后我尝试这样更新: Journee.findByIdAndUpdate(req.params.id,Journee,{new:true,overwrite:true,runValidators:true,context:'query'},) .然后(()=>{ res.statu
删除myObject.myField;
因此,当我在mongoosefindByIdAndUpdate
之前查看它时,它确实没有这些字段,然后我尝试这样更新:
Journee.findByIdAndUpdate(req.params.id,Journee,{new:true,overwrite:true,runValidators:true,context:'query'},)
.然后(()=>{
res.status(200.json)()
})
.catch(错误=>{
res.status(400).json({err})
})
但是当我像这样使用覆盖选项时,它会触发我的唯一验证器并返回一个错误
我不明白如何实现我的目标,在我看来,
mongo
是在创建一个重复的文档,然后抑制旧文档或类似的内容。不只是清空文档并用新数据填充它。如果我理解得很好,您希望删除一些字段并用新字段更新文档
因此,我认为更好的方法是使用$unset
。参考文献
使用$unset
可以从文档中删除任何字段
一个例子
对于这样的查询:
db.collection.update({
“id”:1
},
{
“$unset”:{
“字段1”:“,
“字段3”:”
}
})
您可以找到所需的文档(例如使用id
或任何您想要的内容)。然后$unset
并根据需要删除as字段
使用猫鼬也是一样的:
var update=wait model.updateOne({
“id”:1
},
{
“$unset”:{
“字段1”:“,
“字段3”:”
}
})
console.log(更新)
显示输出:
{n:1,nModified:1,ok:1}
感谢您的回答,这并不理想,因为我希望使用相同的数据库请求来完成,但这是一个很好的解决方法。