Python使用pymongo调用update_one时$addFields报Unknown modifier错误
报错原因
$addFields是MongoDB聚合管道专用的运算符,不属于普通更新操作支持的修饰符范畴。你之前直接把包含$addFields的字典传给update_one的第二个参数,被pymongo识别为普通更新请求,因此抛出未知修饰符的错误。
解决办法
要使用$addFields完成更新,需要将更新逻辑作为聚合管道阶段,放在数组中传入update_one,正确代码如下:
# 替换为你实际使用的集合对象 collection.update_one( filter={'seismic_id': 12345}, # 管道式更新必须用数组包裹阶段列表 update=[ {'$addFields': {'seismic_properties_obj.Client Facing': ['No']}} ] )
补充说明
- 该写法要求MongoDB服务端版本≥4.2,如果你使用的是更早的版本,无法使用管道式更新,直接用原本的$set修饰符即可实现完全相同的字段新增效果:
collection.update_one( {'seismic_id': 12345}, {'$set': {'seismic_properties_obj.Client Facing': ['No']}} ) - 仅当你需要在更新时使用聚合表达式(比如引用文档其他字段的值做计算、使用聚合函数等)时,才需要使用$addFields的管道更新写法,单纯新增固定值字段用$set性能和兼容性都更优。
内容的提问来源于stack exchange,提问作者Riley Eaton
相关产品推荐
相关产品推荐

