mongo插入数据
在往mongo中插入数据时 ,对于小数据量,速度要求不高的数据用insert插入即可,但数据量巨大时,insert插入则无法满足要求,此时批量插入则能极大的提升插入速度
一:insert插入
import pymongo
client = pymongo.MongoClient(host='127.0.0.1',port=27017)
collection = client["db"]['set']
for i in data:
collection.insert(i)
print("数据插入")
往mongo中逐条写入数据,速度相对较慢,此时可以通过在mongo针对某一字段创建唯一索引 来去除重复数据的存入
db.set.ensureIndex({"name":1},{unique:true})
二,insert_many插入
import pymongo
client = pymongo.MongoClient(host='127.0.0.1',port=27017)
collection = client["db"]['set']
arr = []
for m in data:
arr.append(m)
if len(arr)==10000:
collection.insert_many(arr)
bf=[]
collection.insert_many(arr)
通过此方法可以批量快速插入数据,速度相对于insert单条插入有了极大的提升,但通过此种方法插入不能较好的去除重复数据,一个批量数据中若出现重复数据,则会导致这个批量数据整体写入失败
三:批量更新插入bulk_write(UpdateOne)
import pymongo
from pymongo import UpdateOne
client = pymongo.MongoClient(host='127.0.0.1',port=27017)
collection = client["db"]['set']
arr = []
for line in data:
one = UpdateOne({"_id": id}, item, upsert=True)
arr.append(one)
if len(arr) == 10000:
collection.bulk_write(arr)
arr = []
print("数据写入")
collection.bulk_write(arr)
通过此种方法批量写入不仅能极大提高写入速度,还能较好的避免重复数据,当数据写入重复时 则会执行更新操作,更新原来数据,不存在时,数据则直接写入。