go操作mongo,批量插入(insert many)唯一索引冲突问题

记录一下自己在使用go调用mongo的时候,批量插入insert many的时候遇到的唯一索引冲突问题,对go和mongo的官方驱动包不做过多阐述

问题简述:

go语言操作mongo要用到官方的工具包:"go.mongodb.org/mongo-driver/mongo"

其中有个批量插入的方法 InsertMany

批量插入会遇到一个问题(尤其是再分页批量插入的时候,我设置的批量上限是2000条):唯一健索引冲突导致后续的插入失败

需求:

希望批量插入的时候能忽略唯一索引冲突的元素,并保证其他的元素正常插入

解决办法:

思路:

1.设置批量插入的条件ordered=false:保证某一次批量插入的时候,一个失败了,这次批量插入的其他数据能正常被插入。

2.判断返回的err是不是唯一健冲突,如果是的话,忽略该err

首先进行条件插入要用到官方包:

"go.mongodb.org/mongo-driver/mongo/options"

代码demo如下:

_,e:=mgdbClient.DB().Collection(表名).InsertMany(context, 数据集,options.InsertMany().SetOrdered(false))

//判断e是不是mongo的异常
if mgErr, ok := e.(mongo.BulkWriteException); ok {
   //判断该mongo异常是不是内容异常
   i
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值