我无法理解未定义和 null 的 findOneAndUpdate 。
创建对象时:
const user = new User({
_id: 1,
name: "foo",
address: undefined
});
user.save()
Run Code Online (Sandbox Code Playgroud)
它正在创建一个只有名称而没有地址的新文档:
{
name: "foo"
}
Run Code Online (Sandbox Code Playgroud)
如果我在 findOneAndUpdate 之后使用相同的逻辑:
findOneAndUpdate({_id: 1}, {
name: "bar",
address: undefined
});
Run Code Online (Sandbox Code Playgroud)
数据库中的文档现在将包含一个null
for 地址:
{
name: "bar",
address: null,
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么。
我希望当我为其设置一个值时undefined
应该删除当前项目,因此,如果我有一个带有 的文档address: "somewhere"
,或者甚至根本没有address
,我希望该设置undefined
应该删除它(或者如果不存在则不设置) ,而不是将其设置为 null。
这是我能以某种方式实现的吗?或者这是 findOneAndUpdate 的行为?蒙戈数据库?(或猫鼬?)
预先感谢,埃泰。