我有一個包含150萬個文檔的mongoDB集合,所有這些文檔都具有相同的字段,並且我想將Field A的內容(每個文檔都獨一無二)和在其上執行f(A)
,然後創建並在Python填充字段B僞代碼:對MongoDB實例中的每個文檔執行操作
for i in collection.find():
x = i**2
collection.update(i,x) #update i with x
注:據我所知,更新代碼可能是錯的,但除非它影響操作的速度,我選擇了離開它那裏爲了簡單起見
問題是,這段代碼真的很慢,主要是因爲它可以通過1000個文件大約一秒鐘,然後服務器切斷光標大約一分鐘,然後它允許另一個1000.我想知道是否有任何方法來優化此操作,或者如果我堅持這個緩慢的瓶頸。
其他注意事項:
我已經調整
batch_size
作爲一個實驗,它是速度更快,但它的效率不高,而且還需要幾個小時我也知道,SQL也許可以做到這一點更快,還有其他一些原因,我使用的是與此問題無關的noSQL DB
該實例正在本地運行,因此出於所有意圖和目的,沒有網絡延遲
我見過this問題,但它的回答並沒有真正解決我的問題
謝謝,我已經使用的投影和'$ set',但我會考慮的指數點 –