我在MongoDB中有一个现有的集合,我需要通过从MySQL表中获取值来更新某些文档。
目前,我正在使用下面的python代码来使用MongoEngine更新集合,但是由于数据集非常大,它需要花费很多时间(集合中的2m+文档,需要更新其中的80k+文档)
query = "Select * from business"
cursor.execute(query)
for line in cursor:
Movie.objects(movieid=line[0]).first().update(set__business=line[1])虽然更新早期文档(如前5k文档)所花费的时间非常少,但当它开始超越这一点时,就会花费很长时间。我的假设是,它每次都会从一开始就开始寻找记录。它可以通过某种方式进行优化,因为MySQL表记录是有序的。
是否有一种方法可以在集合中搜索,以便下一个循环从上次更新的文档开始?使用MongoDB更新MongoEngine集合的最佳方法是什么?
(附加信息:插入2m+记录大约需要2小时,而更新80k记录则需要25小时)
发布于 2017-03-12 16:09:06
将movieid上的索引添加到集合中,以加快对该字段的更新。
https://stackoverflow.com/questions/42747412
复制相似问题