gpt4 book ai didi

mongodb - Mongo $set 在更新时删除对象中的其他字段

转载 作者:行者123 更新时间:2023-12-03 16:51:43 26 4
gpt4 key购买 nike

我正在处理一个 mongo 语句,用于将值添加和更新到我文档中的对象中。

这是我目前的声明。字段和值的变化取决于传入的内容:

 db.collection.update(id, {
$set: {
analysis : {[field]: value}
}
});

这是文档外观的示例(分析中可能有 20 多个字段)
{
_id
analysis:{
interest_rate: 22
sales_cost: 4000
value: 300
}
}

问题是每次我更新对象时,除了我更新的字段之外,所有字段都被删除。

因此,如果

field = interest_rate



和新的

value = 33



我的文档最终看起来像这样,分析中的所有其他字段都将被删除:
 {
_id
analysis:{
interest_rate: 33
}
}

有没有办法更新像这样的对象中的字段以保持代码简单,或者我是否必须为每个单独的字段写出更新语句?

最佳答案

您应该使用 dot notation在您尝试更新嵌套字段时构建路径。尝试:

let fieldPath = 'analysis.' + field; // for instance "analysis.interest_rate"

db.collection.update(id, {
$set: {
fieldPath: value
}
});
否则你只是替换现有的 analysis目的。

关于mongodb - Mongo $set 在更新时删除对象中的其他字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53196701/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com