无法“删除”猫鼬文档中对象的属性[重复]

Posted

技术标签:

【中文标题】无法“删除”猫鼬文档中对象的属性[重复]【英文标题】:Unable to "delete" the property of the object in mongoose Document [duplicate] 【发布时间】:2020-12-22 05:02:10 【问题描述】:

我无法从 mongoose 中删除(在 mongoose 中,它称为未设置)该字段,但 $unset 正在工作。下面的例子将很好地展示我的问题。

没有$unset

let user = await User.findById(user_id);
delete user.last_name;
await user.save();

user = await User.findById(user_id);
console.log(user.last_name); // Santiago 

$unset

await User.findByIdAndUpdate(user_id,  $unset:  last_name: true  );

let user = await User.findById(user_id);
console.log(user.last_name); // undefined 

【问题讨论】:

【参考方案1】:

user Document 实例的 last_name 属性是 Mongoose 从模型架构中添加的 getter,以使生活更轻松。

您可能能够delete 的真实文档保存在一个内部变量中。

您可以将字段设置为undefined,猫鼬会为您解决:

user.last_name = undefined
await user.save()

【讨论】:

以上是关于无法“删除”猫鼬文档中对象的属性[重复]的主要内容,如果未能解决你的问题,请参考以下文章

查询后在猫鼬对象中设置属性[重复]

查询后在猫鼬对象中设置属性[重复]

节点/猫鼬 - 从数组中删除 ObjectId [重复]

猫鼬 |如何从此猫鼬模式中删除重复错误[重复]

无法访问从猫鼬fineOne()返回的json中的键[重复]

当我想在猫鼬中从数据库中查找文档时,函数返回未定义 [重复]