没有“丢弃”的猫鼬更新对象
mongoose Update object without “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,
}
}
)
找到这个 说要添加 $set 运算符,但它仍然会丢失数据..
如何使用 mongoose 仅更改 mongoDB 对象中的一个数据而不删除同一对象中的其他数据..!
您可以使用展开运算符来只更新您想要的字段,而让其他字段保持原样。因此请尝试以下代码:
await User.update ( { email: user[0].email }, { obj1:{...obj1, amount: 2245, } } );
您使用的更新是替换样式更新,其中整个文档被替换为新文档。如果只想更新单个字段,请使用 $set
运算符:
.update({email: user[0].email},{$set:{"obj1.amount":2245}})
我有这个型号:
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,
}
}
)
找到这个
如何使用 mongoose 仅更改 mongoDB 对象中的一个数据而不删除同一对象中的其他数据..!
您可以使用展开运算符来只更新您想要的字段,而让其他字段保持原样。因此请尝试以下代码:
await User.update ( { email: user[0].email }, { obj1:{...obj1, amount: 2245, } } );
您使用的更新是替换样式更新,其中整个文档被替换为新文档。如果只想更新单个字段,请使用 $set
运算符:
.update({email: user[0].email},{$set:{"obj1.amount":2245}})