如何使用同一条记录中的已有字段值更新MongoDB记录
解决MongoDB同文档字段赋值的问题
问题根源在于你用了普通字符串赋值,而非MongoDB支持的字段引用语法,且未使用聚合管道实现跨字段更新。
正确的更新语句
db.getCollection("MyCollection").updateMany( // 填写你的查询过滤条件 { /* SOME LOGIC HERE */ }, // 使用聚合管道完成字段赋值 [ { "$set": { "updatedTs": "$createdTs" } } ] )
核心要点
- 要引用当前文档的已有字段进行更新,必须把更新操作写成聚合管道数组(用
[]包裹),不能用普通的对象形式。 - 在聚合管道的
$set里,用$字段名的格式就能直接调用同文档的对应字段值,这里$createdTs就是对当前文档createdTs字段的正确引用。 - 使用聚合管道时,
updateMany默认会更新所有符合查询条件的文档,所以multi: true参数可以省略(写了也不影响,但没必要)。
原代码的错误
$$createdTs不是MongoDB的字段引用格式,直接加引号会被当成普通字符串存入字段;- 普通的
$set对象无法实现同文档字段间的赋值,必须依赖聚合管道语法。
内容的提问来源于stack exchange,提问作者Daniella
相关产品推荐
相关产品推荐

