MongoDB使用$push更新sensor_id为2的文档medidas数组无效果问题咨询
问题原因
你写的更新语句存在两处明显错误,导致匹配不到文档或无法执行数组更新:
- 查询条件错误添加了
"_id": 0过滤规则,你集合内所有文档的_id都是ObjectId类型,不存在_id为0的文档,因此查询不到任何符合条件的待更新记录 $push操作符后目标数组字段多写了$前缀,错误写成$medidas,MongoDB会将其识别为非目标字段,无法对正确的medidas数组执行追加操作
正确更新语句
如果需要更新所有sensor_id: 2的文档,直接使用如下语句即可:
db.datos_sensores2.update( { "sensor_id": 2 }, { $push: { "medidas": { $each: [ {"precio_kWh": 0.102, "unidad": "€/kWh"}, {"superficie": 450, "unidad": "m2"} ] } } }, { multi: true } )
如果需要额外限制location_id为1,只需要把查询条件修改为{ "sensor_id": 2, "location_id": 1 }即可。
内容的提问来源于stack exchange,提问作者Gaby
相关产品推荐
相关产品推荐

