Проблема в том, что когда вы делаете:
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)