mongodb - 没有“drop”的猫鼬更新对象
问题描述
我有这个模型:
const UserSchema = mongoose.Schema({
email:{
type: String,
unique: true,
required: true
},
password:{
type: String,
required: true
},
obj1: {
type: Object,
unique : true,
dropDups : true
}
});
那么寄存器上的初始数据是:
new User({
email:email,
password:password,
obj1:
{
address: '0x1232424...',
amount: 1578,
time: Date.now()
}
})
当我尝试更新数据时,我不能只更改对象内部的数据,但它会更改所有对象数据。所以如果我只想更改数量,那么 obj1.address 和 obj1.time 将被删除。 .
await User.update (
{ email: user[0].email },
{
obj1:{
amount: 2245,
}
}
)
发现这个没有“drop”的猫鼬更新对象说要添加 $set 运算符,但它仍然会丢弃数据..
如何在不删除同一对象中的其他数据的情况下只更改 mongoDB 中的对象内的一个数据 mongoose..!
解决方案
您可以使用扩展运算符 仅更新您想要的字段,并让其他字段保持原样。因此请尝试以下代码:
await User.update ( { email: user[0].email }, { obj1:{...obj1, amount: 2245, } } );
推荐阅读
- r - 如何在 tidyverse 范围动词或映射器的 tidyeval 上下文中使用 Quasiquotation?
- python-3.x - 如何以更好的方式编码?
- python - SQLAlchemy如何分组关系?
- php - 是否可以将具有匿名函数的数组分配给 PHP 中的类属性?
- javascript - 使用 javascript 或 php 更改 var img_list 值
- javascript - 如何将 .on ('ready') 替换为命名空间,以便在维护命名空间的同时准备好 ()?
- javascript - scrollToIndex 上的平面列表问题
- angular - 从 url 在页面之间传递数据
- vmware-clarity - 将最后一个数据网格行推到网格底部
- angularjs - 如何在指令中制作我自己的 ng-change 和 ng-model?