使用PyMongo update_many复制字段值失败:$requestid被识别为字面量
MongoDB批量更新字段值复制问题解决方法
你遇到的问题是因为普通update_many的$set操作符无法直接引用文档内的其他字段值,直接写'$requestid'会被当作字符串字面量存储。要实现字段值复制且不用eval,可以使用MongoDB 4.2及以上版本支持的聚合管道更新方式。
修正后的代码
res = result_collection.update_many( filter={'requestid': {'$in': str_req_ids}}, update=[{'$set': {'original_requestid': '$requestid'}}], session=session )
关键说明
- 将
update参数从普通对象改为聚合管道数组,这样MongoDB会解析管道中的$requestid为当前文档的requestid字段值,而非字面量字符串。 - 该方式要求MongoDB版本≥4.2,若你的版本低于此,需要先升级MongoDB。
内容的提问来源于stack exchange,提问作者rcs
相关产品推荐
相关产品推荐

