是否有办法在MongoDB中使用节点和express js只更新一个单元格记录?



我只想更新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是usestates,即

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

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

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

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

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