我正在处理一个 mongo 语句,用于将值添加和更新到我文档中的对象中。
这是我目前的声明。字段和值的变化取决于传入的内容:
db.collection.update(id, {
$set: {
analysis : {[field]: value}
}
});
Run Code Online (Sandbox Code Playgroud)
这是文档外观的示例(分析中可能有 20 多个字段)
{
_id
analysis:{
interest_rate: 22
sales_cost: 4000
value: 300
}
}
Run Code Online (Sandbox Code Playgroud)
问题是每次我更新对象时,除了我更新的字段之外,所有字段都被删除。
因此,如果
字段 = 利率
和新的
值 = 33
我的文档最终看起来像这样,分析中的所有其他字段都将被删除:
{
_id
analysis:{
interest_rate: 33
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法更新像这样的对象中的字段以保持代码简单,或者我是否必须为每个单独的字段写出更新语句?
当您尝试更新嵌套字段时,您应该使用点表示法来构建路径。尝试:
let fieldPath = 'analysis.' + field; // for instance "analysis.interest_rate"
db.collection.update(id, {
$set: {
fieldPath: value
}
});
Run Code Online (Sandbox Code Playgroud)
否则,您只是替换现有analysis对象。
| 归档时间: |
|
| 查看次数: |
1404 次 |
| 最近记录: |