使用 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 文档的技巧?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用纯 Redis 原子地删除数百万个匹配模式的键?

快速方法按距离搜索数百万个坐标

高效地将数百万个 JSON 文件附加到单个文件中

批量地理定位数百万个 IP

哪种语言可以将数百万个脏地址稳定地处理为标准格式?

比较数百万个 mongoDB 记录中的变化的最佳方法