最快的方法是将没有重复的字段更新为mongodb

时间:2017-01-20 13:40:22

标签: python mongodb

我有一个很大的csv文件,其中130M的行包含列(NAME,date)

我想导入/更新到Mongodb而没有任何重复(名称)。

我尝试用pymongo更新:

today = datetime.datetime.utcnow()
s = '.'

for line in open('input.csv', "r"):
        remove = line.rstrip()
        name = remove.lower()
        collection.update({"name": name},{"$set": {"zone_date": today}}, upsert = True)

这很慢,然后我尝试使用--uperfield选项导入importmongo:

mongoimport -d mydatabase -c name --type csv --fields name,zone_date --upsertFields name --file input.csv 

但两种方法都很慢。 您是否知道提高更新数据集速度的最佳方法?

1 个答案:

答案 0 :(得分:0)

除了批量工作(比如1M行)之外,如果你想使用PyMongo,你可以将最终记录放在一个列表中,并将它们与insert_many一起插入。

records = [] 

with open('input.csv') as input_file:
    for line in input_file:
        remove = line.rstrip()
        name = remove.lower()
        records.append({"name": name, "zone_date": today})

# don't insert until the end 
collection.insert_many(records, upsert = True)

这会加快速度。