mongo批量插入,并去重

本文介绍了MongoDB的三种插入数据方法:单条insert插入、insert_many批量插入和bulk_write批量更新插入。在大数据量场景下,insert_many提高了插入速度,但无法有效去重。bulk_write结合UpdateOne不仅能快速插入,还能在遇到重复数据时进行更新,确保数据的唯一性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)

通过此种方法批量写入不仅能极大提高写入速度,还能较好的避免重复数据,当数据写入重复时 则会执行更新操作,更新原来数据,不存在时,数据则直接写入。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值