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個小時)
你有'movieid'上的索引嗎? – JohnnyHK
@JohnnyHK,謝謝,我沒有意識到這一點。如果你想添加它作爲答案,我會接受它。 – Grimlock