使用python快速有效地更新数百万个MongoDB文档的提示?

时间:2019-03-24 22:10:21

标签: python mongodb nosql

有关mongodb db的快速问题,收集我的设置,并试图使用python更新每个文档。

基本上,我收集了约260万条邮政编码记录,并且我的python脚本使用邮政编码作为键从csv文件中获取数据。

所有邮政编码都是唯一的,并且数据库和CSV都有相应的密钥。我要导入的数据本身并不重要,这实际上是一个练习,目的是使用python查找更新我的文档的最佳方法,因为我计划以后再处理更有意义的数据。我已经在mongo集合中的邮政编码列中添加了一个索引,但这似乎并没有加快处理速度。

当我运行下面的代码时,似乎每个文档大约需要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")

1 个答案:

答案 0 :(得分:0)

请查看bulk_write API,该API将允许您批量更新,从而减少了往返服务器的次数。另外,拆分数据并并行运行许多更新过程,以便并行进行更新。由于write_concerns等原因,数据库服务器的任何特定更新速度可能都会变慢。但是它可以并行处理许多更新。