使用 python 快速有效地更新数百万个 MongoDB 文档的技巧?
Posted
技术标签:
【中文标题】使用 python 快速有效地更新数百万个 MongoDB 文档的技巧?【英文标题】:Tips on quickly and efficiently updating millions of MongoDB documents using python? 【发布时间】:2019-08-15 04:18:21 【问题描述】:关于 mongodb db 的快速问题并收集我已经设置并正在尝试使用 python 更新每个文档。
基本上,我收集了大约 260 万条邮政编码记录,并且我的 python 脚本使用邮政编码作为键从 csv 文件中获取数据。
所有邮政编码都是唯一的,DB 和 CSV 都有相应的键。我要导入的数据本身并不重要,这更像是一个练习,以找到使用 python 更新我的文档的最佳方法,因为我将计划稍后用更有意义的数据做一些事情。我已经在 mongo 集合中的 postcode 列中添加了一个索引,但这似乎并没有加快处理速度。
当我运行下面的代码时,每个文档似乎需要大约 1 秒的时间来更新,你可以猜到,等待所有这些记录更新的时间太长了。有谁知道更快的方法来做到这一点,如果下面我的示例中有任何内容可能会阻止它运行得更快。
任何帮助将不胜感激。抱歉,如果这是错误的地方,我不确定是 mongo 问题还是 python 问题。
谢谢
请找到我用来更新 mongo 记录的 python 代码示例。
for key, val in testdict.items():
mycol.update_one("Postcode": key, "$set": "SOAExample": val)
count = count+1
print(count, " out of ", totalkeys, " done")
【问题讨论】:
Bulk update in Pymongo using multiple ObjectId的可能重复 【参考方案1】:查看bulk_write API,它允许您批量更新,从而减少到服务器的往返次数。此外,拆分数据并并行运行许多更新过程,以便并行进行更新。由于 write_concerns 等原因,对于任何特定更新,数据库服务器可能会变慢,但它可以并行处理许多更新。
【讨论】:
以上是关于使用 python 快速有效地更新数百万个 MongoDB 文档的技巧?的主要内容,如果未能解决你的问题,请参考以下文章