【问题标题】:Is there any way to update only one cell record in MongoDB using nodes and express js?有没有办法使用节点和表达js只更新MongoDB中的一个单元格记录?
【发布时间】:2021-11-23 18:24:07
【问题描述】:

我只想更新 mongoDB 数据的一条记录 例如,在下面的给定数据中,我想更新 CAD 的值

[
  {
    _id: new ObjectId("615564fbab33d4da1ab2d9bb"),
    AUD: 20,
    CAD: 92.8,
    CHF: 69.14,
    EUR: 63.03,
    GBP: 54.22,
    KWD: 22.49,
    __v: 0
  }
]

那么更新记录的查询是什么,我从前端得到两个输入

var doc= {
  TNAME:req.body.tname,
  TVALUE:re.body.tvalue
  }

这里的 TNAME 是 CAD,TVALUE 是它的更新值。 在前端,代码是这样的

 var doc={tname,tvalue};
  
    axios.put('/memfeeput', doc)
    .then( res => {
      alert('Updated successfully!');
     }   
    )
    .catch(err => {
      console.log(err.response);
      alert('An error occurred! Try submitting the form again.');
    });

在代码var doc={tname,tvalue}; 中,tname 和 tvalue 是使用状态,即

 const [tname, setname] = useState("");
  const [tvalue, setvalue] = useState("");

应如何编写查询以访问 CAD/ 或任何其他特定数组记录。

【问题讨论】:

    标签: node.js reactjs mongodb express


    【解决方案1】:

    您可以编写一个更新查询,并在对象中的[tname]中设置更新键,

    使用updateMany更新多个文档,单个文档更新可以使用updateOne方法,

    let result = await MemberFee.updateOne(
      { _id: _id }, 
      { $set: { [req.body.tname]: re.body.tvalue } }
    );
    

    【讨论】:

    • MemberFee.updateOne({_id: _id}, { $set: { [req.body.tname]: req.body.tvalue } }).then { res.send("success") } 试过这段代码,但更新没有成功
    • 我写的 {_id: _id} 是为了匹配 id 然后更新 CAD 记录
    • 查询的响应是什么?并且您在查询之前添加了await 吗?
    • 现在可以使用以下代码:MemberFee.findOneAndUpdate({_id: _id}, {$set:{[doc.TNAME]:req.body.tvalue}}, {new: true}, (err, doc) => { if (err) { console.log("更新数据时出现问题!"); } console.log(doc); });
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-08
    • 1970-01-01
    • 1970-01-01
    • 2021-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多