如何使用mongoose和node.js更新存在于mongod中的对象的childs值?

问题描述 投票:0回答:1

我想更新特定对象的值,该值实际上存在于对象中,并且希望我所有的其余值都相同。我想使用猫鼬npm软件包。

例如:

basic:{
 name: "ABC",
 mobile: 1234567890,
 age: 20
},
other:{
 pincode: 123456,
 email: "[email protected]"
}

我的代码

 Model.findOneAndUpdate(
  { "basic.mobile": 1234567890 },
     {
           basic:{ name: "CDE"}
     },
     (err, doc) => {
       if (err) return res.send({ error: err });
       res.send(`updated`);
     }
 );

它起作用,但它override先前的基本数据并创建一个我提供的新数据。它应该更新,但还应该有剩余值。我该怎么办?

node.js mongodb mongoose
1个回答
0
投票

您的问题包含答案。对于“过滤器”,您正使用点运算符正确引用单个字段,即>

"basic.mobile": 1234567890

您也应该执行类似的更新操作,这是函数调用的第二个参数,因为它是一个新对象,所以定义的方法是错误的-当您要替换整个basic对象时应使用D B。如果只想更新name字段,则应使用如下的点运算符。

"basic.name":"CDE"

因此整个功能如下所示。

Model.findOneAndUpdate(
     { "basic.mobile": 1234567890 },
     { "basic.name": "CDE"},
     (err, doc) => {
       if (err) return res.send({ error: err });
       res.send(`updated`);
     }
 );
© www.soinside.com 2019 - 2024. All rights reserved.