如何通过Mongoose删除MongoDB文档中的指定字段
实现方案
删除单篇文档内的指定字段,需使用MongoDB的$unset更新操作符配合更新类方法实现,deleteOne是用于删除整份文档的接口,不适用该场景。
原生Mongo Shell写法
db.users.updateOne( // 匹配目标文档的查询条件 { _id: "12345678" }, { // $unset字段的值可以是任意非空值,填写1或者空字符串都可以 $unset: { firstName: "", lastName: "", email: "", website: "", skills: "", dob: "", createdAt: "" } } )
Mongoose 写法(你用到的userModel场景)
基础更新写法
await userModel.updateOne( { _id: id }, { $unset: { firstName: 1, lastName: 1, email: 1, website: 1, skills: 1, dob: 1, createdAt: 1 } } )
需要返回更新后文档的写法
const updatedUser = await userModel.findByIdAndUpdate( id, { $unset: { firstName: 1, lastName: 1, email: 1, website: 1, skills: 1, dob: 1, createdAt: 1 } }, { new: true } // 该配置项会返回修改后的文档,默认返回修改前的旧文档 )
注意:你提供的示例文档中网站字段拼写为
webisite,实际执行时请根据你生产环境的真实字段名调整,避免删除失效。
内容的提问来源于stack exchange,提问作者Mhd
相关产品推荐
相关产品推荐

