我正在使用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()
Run Code Online (Sandbox Code Playgroud)
代码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()
Run Code Online (Sandbox Code Playgroud)
我的收藏中有50000个文件.如果我摆脱了计数器和if语句(代码1),代码就会卡住!使用if语句(代码2),我假设这个操作不应该花费超过几分钟,但它正在采取更多的方式!你能帮助我加快速度,还是我的假设错了?!