我正在使用pymongo進行批量更新。
下面的名稱列表名(每名可能具有集合中多發的文件)的不同列表批量更新太慢
代碼1:
bulk = db.collection.initialize_unordered_bulk_op()
for name in names:
bulk.find({"A":{"$exists":False},'Name':name}).update({"$set":{'B':b,'C':c,'D':d}})
print bulk.execute()
代碼2:
bulk = db.collection.initialize_unordered_bulk_op()
counter = 0
for name in names:
bulk.find({"A":{"$exists":False},'Name':name}).update({"$set":{'B':b,'C':c,'D':d}})
counter =counter + 1
if (counter % 100 == 0):
print bulk.execute()
bulk = db.collection.initialize_unordered_bulk_op()
if (counter % 100 != 0):
print bulk.execute()
我的收藏中有50000個文檔。 如果我擺脫了計數器和if語句(代碼1),代碼就卡住了! 使用if語句(代碼2),我假設這個操作不應該花費幾分鐘的時間,但是它比這個更多!你能幫我把它變快嗎?還是我錯了我的假設?!
感謝您的幫助,但我認爲您在上面給出的時間點不正確,因爲它們不是10000個文件,但只有一半(考慮> 0.5和<= 0.5是平等的可能)。此外,如果您可以分享如何爲初學者編制字段A和名稱的索引,這將有所幫助。再次感謝! – amazingCodingExperience
另外,如何索引固定過程?你能分享一下這個理論嗎? – amazingCodingExperience
添加更多信息給我的答案。但是,mongodb免費提供相當不錯的在線課程:https://university.mongodb.com/courses/M101P/about我建議你選擇其中的一種來加速mongo。 – squanto773