2017-03-12 29 views
0

我有一个在MongoDB中的现有集合,我需要通过从MySQL表中获取值来更新某些文档。如何使用MongoEngine将MySQL数据库传输到MongoDB?

目前,我正在使用以下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表记录是有序的。

有没有办法在集合中搜索,以便下一个循环从最后更新的documentid开始?使用MongoEngine更新MongoDB集合的最佳方法是什么?

(附加信息:将2M +记录了大约2个小时,而更新80K记录花了25个小时)

+0

你有'movieid'上的索引吗? – JohnnyHK

+0

@JohnnyHK,谢谢,我没有意识到这一点。如果你想添加它作为答案,我会接受它。 – Grimlock

回答

1

movieid添加一个索引到您的收藏,以加快更新,关键关闭该领域。

相关问题