我正在尝试更新我的文档以删除我正在前端进一步测试的一些字段,我用以下方法删除了这些字段:delete myObject.myField;因此,当我在猫鼬之前查看它时,findByIdAndUpdate它确实没有这些字段,然后我尝试像这样更新:Journee.findByIdAndUpdate(req.params.id, journee, {new: true, overwrite: true, runValidators: true, context: 'query'}, ) .then(() => { res.status(200).json() }) .catch(err => { res.status(400).json({ err }) })但是当我像这样使用覆盖选项时,它会触发我的唯一验证器并返回错误。我不明白如何实现我的目标,在我看来,这mongo是创建一个重复的文档,然后抑制旧的文档或类似的东西。而不是仅仅清空文档并用新数据填充它。
1 回答
莫回无
TA贡献1865条经验 获得超7个赞
如果我理解得很好,您想删除一些字段并用新字段更新文档。
所以我认为更好的方法是使用$unset
.
您可以从$unset
文档中删除任何字段。
这里有一个例子
通过这样的查询:
db.collection.update({
"id": 1
},
{
"$unset": {
"field1": "",
"field3": ""
}
})
您可以找到您想要的文档(例如使用id或任何您想要的)。然后$unset根据需要删除字段。
使用猫鼬是一样的:
var update = await model.updateOne({
"id": 1
},
{
"$unset": {
"field1": "",
"field3": ""
}
})
console.log(update)
显示输出:
{ n: 1, nModified: 1, ok: 1 }
添加回答
举报
0/150
提交
取消