调用pymongo的update_one方法时报filter需为dict等类型的TypeError如何解决?
报错触发原因
pymongo的update_one方法要求传入的第一个参数(匹配要更新数据的过滤条件)、第二个参数(更新操作规则)都必须是字典(dict)、bson.son.SON或者其他继承自collections.Mapping的映射类型。
你代码中写的{"name", "Amy"}和{"address", "Ahmadabad"}都不是字典,而是Python的集合(set)类型:Python语法中大括号内用逗号分隔无对应关系的元素时会被识别为集合,只有用键:值格式分隔的内容才会被识别为字典,因此触发了类型校验错误。
修复方案
把所有集合写法调整为字典的键值对写法即可,修改后的可运行代码如下:
# 过滤条件改为字典格式,键值用冒号分隔 prev = {"name": "Amy"} # 更新规则中的字段赋值也改为字典键值对格式 next_ = {"$set": {"address": "Ahmadabad"}} collection.update_one(prev, next_)
内容的提问来源于stack exchange,提问作者Urmil Rupareliya
相关产品推荐
相关产品推荐

