如何在MongoDB中更新嵌套对象的属性
MongoDB嵌套对象属性更新错误修复方案
错误原因
你遇到的报错来自两个问题:
- _id类型不匹配:存储的文档中
_id是数字类型的12478565,但你的过滤条件里传入了字符串类型的'12478565',MongoDB执行严格类型匹配,无法命中目标文档。 - 嵌套字段语法错误:在JavaScript等环境中直接写
products.price作为对象键不符合语法规范,包含特殊符号的键需要用引号包裹。
正确写法
以Node.js运行环境为例,正确的更新语句如下:
productsCollection.updateOne( { _id: 12478565 }, // 过滤条件的_id和存储类型保持一致,使用数字类型 { $set: { "products.price": 190000 } } // 嵌套字段使用点表示法,并用引号包裹字段名 )
嵌套更新通用规则
- 更新嵌套字段统一使用
父层级.子层级的点表示法 - 超过两层的嵌套字段也遵循相同规则,例如更新
a.b.c的写法为"a.b.c": 目标值 - 所有过滤、更新的字段值必须和数据库存储的类型完全匹配,不可混用数字、字符串、ObjectId等类型
内容的提问来源于stack exchange,提问作者romjan
相关产品推荐
相关产品推荐

