Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Mongoose更新完全替换以前的文档_Javascript_Node.js_Mongodb_Mongoose - Fatal编程技术网

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;
因此,当我在mongoose
findByIdAndUpdate
之前查看它时,它确实没有这些字段,然后我尝试这样更新:

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}

感谢您的回答,这并不理想,因为我希望使用相同的数据库请求来完成,但这是一个很好的解决方法。