如何根据字典更新MongoDB/PyMongo ?



我希望为用户更新数据库中的所有文档,以便每个用户获得类似于

的更新
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.

最新更新