如何使用mongoose和node.js更新存在于mongod中的对象的childs值?
我想更新特定对象的值,该值实际上存在于对象中,并且希望我所有的其余值都相同。我想使用猫鼬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先前的基本数据并创建一个我提供的新数据。它应该更新,但还应该有剩余值。我该怎么办?
回答如下:您的问题包含答案。对于“过滤器”,您正使用点运算符正确引用单个字段,即>
"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`);
}
);