我有如下所示的JSON
{"city": "New York"}, {"$set": {"city": "Toronto"}}
当我直接在update_one方法中给出
database.collection.update_one({"city": "New York"}, {"$set": {"city": "Toronto"}})
效果很好,没有问题。
但是当我分配给
这样的变量时temp = {"city": "New York"}, {"$set": {"city": "Toronto"}}
database.collection.update_one(temp)
哪个给我以下错误:
TypeError("update_one() missing 1 required positional argument: 'update'",)
我用过
json.loads(temp)
以及
json.dumps(temp)
不是为我工作吗?任何想法。
答案 0 :(得分:0)
问题是,当您这样做时:
database.collection.update_one({"city": "New York"}, {"$set": {"city": "Toronto"}})
您正确传递了两个位置参数:第一个(对应于filter
)是{"city": "New York"}
,第二个(对应于update
)是{"$set": {"city": "Toronto"}}
。
但是什么时候做:
temp = {"city": "New York"}, {"$set": {"city": "Toronto"}}
database.collection.update_one(temp)
您现在正在传递单个位置参数,该位置参数是一个元组,因此会出现有关缺少参数的错误消息。
您需要执行的操作之一是
a)将元组展开为位置参数:
temp = {"city": "New York"}, {"$set": {"city": "Toronto"}}
database.collection.update_one(*temp) # Notice the "*" here
b)传递多个位置参数:
filter, update = {"city": "New York"}, {"$set": {"city": "Toronto"}} # Tuple expanded here, as two variable
database.collection.update_one(filter, update)