柚子 u=10=u

Pymongo update_one

我有 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)

不适合我?任何想法。

问题是当你这样做时:

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)