Python mongodb速度慢,更新次数多

Python mongodb速度慢,更新次数多,python,mongodb,pymongo,Python,Mongodb,Pymongo,我正在使用python(3.4)解析一个巨大的文本文件(~200MB,500k行),并向mongodb(3.4.4)添加条目。我的程序是这样的: for line in file: if ‘some_string1’ in line: list1 = line.split(“,”) mydict[field1] = list1[0] mydict[field2] = list1[4] db.coll1.insert(mydi

我正在使用python(3.4)解析一个巨大的文本文件(~200MB,500k行),并向mongodb(3.4.4)添加条目。我的程序是这样的:

for line in file:
    if ‘some_string1’ in line:
        list1 = line.split(“,”)
        mydict[field1] = list1[0]
        mydict[field2] = list1[4]
        db.coll1.insert(mydict)

    elif ‘some_string2’ in line:
        list1 = line.split(“,”)
        mydict[field1] = list1[0]
        mydict[field2] = list1[4]
        mydict[notes] = “some_notes”
        db.coll1.update({“filed1”: mydict[“filed1”}, {"$set":{"notes": mydict["notes"]}}, upsert=False)

该程序运行极慢(处理所有线路需要4-5小时)。我曾尝试将filed1设置为索引,但没有帮助。插入数据库要快得多,但更新要花很多时间。我能做些什么来优化性能?

了解@NeilLunn,谢谢你的建议。我尝试了批量写入,性能提高了约8%。然而,这对我来说仍然是一段很长的时间。有没有其他提高绩效的建议?那你就做错了。当你的问题中没有包括你实际做过的事情时,不要说“我试过了”。如果您使用正确,并且您实际阅读了手册和本网站上的许多用法解答,那么您将理解正确的用法,并且您提到的一些小改进表明您不理解。只需将上面的
.update()
.insert()
方法替换为
.bulk\u write()
几乎什么都做不了,这就是为什么我说了解
bulk\u write()
因为bulk\u write没有多大帮助,所以我将文件转换为数据帧。mongodb update语句被数据帧合并替换。而且,闪电很快。整个程序的执行时间从几小时缩短到几分钟。