我希望为用户更新数据库中的所有文档,以便每个用户获得类似于
的更新for user in user_to_state:
collection_users.update_one({"username":user}, {$set: {"state":user_to_state[user]}})
但是我想在单个查询中完成它,而不是迭代遍历字典,一次更新每个查询。这可能吗?它比迭代更快吗?
如果我有一个包含每个用户的用户名(这个集合中每个文档当前的字段)及其状态的字典,例如{"jim12"; "TX"; "jane34"; "FL",…}是否有一种方法来做一个单一的查询,提交整个字典,并通过每个或它必须通过迭代与update_one方法?
提前感谢!
您应该能够使用批量写入来做到这一点。
queries = []
for user in user_to_state:
query = {
"updateOne": {
"filter": {"username": user},
"update": {"$set": {"state": user_to_state[user]}}
}
}
queries.append(query)
collection_users.bulk_write(queries)
MongoDB docs here.
Pymongo docs here.