首页 > 解决方案 > 没有“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..!

标签: mongodbmongoosesave

解决方案


您可以使用扩展运算符 仅更新您想要的字段,并让其他字段保持原样。因此请尝试以下代码:

await User.update ( { email: user[0].email }, { obj1:{...obj1, amount: 2245, } } );

推荐阅读