Java中使用mongoTemplate批量插入

Java中使用mongoTemplate批量插入,第1张

Java中使用mongoTemplate批量插入

业务背景:前端上传zip压缩包文件,后端接受到请求后解压zip得到源文件,数据库记录源文件信息,数据库使用的是mongodb,业务要求同一个文件(这里我们根据文件名称作为判断条件)只有一条记录。

实现方案:

方案一:使用MongoRepository中的saveAll()方法;为减少对数据库的访问,这里都使用的是批量 *** 作,首先根据文件名称批量查询,对结果集中的文件名称和参数文件名集合进行比较,取差集,对结果集中没有的进行批量插入,总结一下就是先查询去重再执行插入。

方案二:在文件名称字段上创建唯一索引,让数据库本身保证数据唯一性;使用唯一所以代码层面使用mongoTemplate.bulkOps,具体如下:
 

    public void saveBatch(List list) {
        mongoTemplate.bulkOps(BulkOperations.BulkMode.UNORDERED,     FileEntity.class).insert(list).execute();
    }

参数说明:

BulkMode.UNORDERED:表示并行处理,遇到错误时能继续执行不影响其他 *** 作;
BulkMode.ORDERED:表示顺序执行,遇到错误时会停止所有执行

这里推荐使用第二种方案,效率高,实测每批500条数据插入耗时150毫秒左右

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5718631.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存