我正在使用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