python-3.x - 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)
推荐阅读
- python - 程序未读取“?” 用“?”分隔字符串后 也 '。'
- r - R遍历一组列以制作多个图
- discord - 如何让 discord.js 机器人回复 DM 但只回复一次
- javascript - 如何根据变量过滤打字稿数组
- javascript - Safari iframe hasStorageAccess,但从它的非 iframed url 输出不同的 localStorage
- ssis - SSIS 在不使用 SQL 的情况下将多行合并并连接成单行
- api - SPFx 图形 API 响应处理
- javascript - 尝试在 getServerSideProps 上下文中访问 apolloClient
- excel - 如果它们等于某物,则删除最后 3 个字符
- bash - 将 ENV 传递给运行单个命令的 Docker 容器