我想更新特定的子值,它实际上存在于对象中,并且希望我所有的rest值都是相同的。我想用猫鼬npm包。
例如:
basic:{
name: "ABC",
mobile: 1234567890,
age: 20
},
other:{
pincode: 123456,
email: "abc@abc.com"
}我的代码
Model.findOneAndUpdate(
{ "basic.mobile": 1234567890 },
{
basic:{ name: "CDE"}
},
(err, doc) => {
if (err) return res.send({ error: err });
res.send(`updated`);
}
);它可以工作,但重写了以前的基本数据,并创建了我提供的新数据。它应该更新,但也应该存在rest值。我该怎么做?
发布于 2019-10-01 07:16:26
你的问题包含了答案。对于过滤器,您指的是正确使用点运算符的单个字段,即
"basic.mobile": 1234567890您也应该为update做类似的事情,也就是函数调用的第二个参数,您定义的方式是错误的,因为它是一个新的对象--当您想在DB中替换整个basic对象时应该使用它。如果您只想更新name字段,那么应该使用如下所示的点运算符。
"basic.name":"CDE"所以整个函数如下所示。
Model.findOneAndUpdate(
{ "basic.mobile": 1234567890 },
{ "basic.name": "CDE"},
(err, doc) => {
if (err) return res.send({ error: err });
res.send(`updated`);
}
);https://stackoverflow.com/questions/58179407
复制相似问题