首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用node.js更新mongoose中存在的对象的childs值?

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

Stack Overflow用户
提问于 2019-10-01 06:48:52
回答 1查看 269关注 0票数 0

我想更新特定的子值,它实际上存在于对象中,并且希望我所有的rest值都是相同的。我想用猫鼬npm包。

例如:

代码语言:javascript
复制
basic:{
 name: "ABC",
 mobile: 1234567890,
 age: 20
},
other:{
 pincode: 123456,
 email: "abc@abc.com"
}

我的代码

代码语言:javascript
复制
 Model.findOneAndUpdate(
  { "basic.mobile": 1234567890 },
     {
           basic:{ name: "CDE"}
     },
     (err, doc) => {
       if (err) return res.send({ error: err });
       res.send(`updated`);
     }
 );

它可以工作,但重写了以前的基本数据,并创建了我提供的新数据。它应该更新,但也应该存在rest值。我该怎么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-01 07:16:26

你的问题包含了答案。对于过滤器,您指的是正确使用点运算符的单个字段,即

代码语言:javascript
复制
"basic.mobile": 1234567890

您也应该为update做类似的事情,也就是函数调用的第二个参数,您定义的方式是错误的,因为它是一个新的对象--当您想在DB中替换整个basic对象时应该使用它。如果您只想更新name字段,那么应该使用如下所示的点运算符。

代码语言:javascript
复制
"basic.name":"CDE"

所以整个函数如下所示。

代码语言:javascript
复制
Model.findOneAndUpdate(
     { "basic.mobile": 1234567890 },
     { "basic.name": "CDE"},
     (err, doc) => {
       if (err) return res.send({ error: err });
       res.send(`updated`);
     }
 );
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58179407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档