分批插入数据
小于 1 分钟
分批插入,一次最多插入1000条
IntStream.range(0, (dataQualityRuleResultDocumentList.size() + BATCH_SIZE - 1) / BATCH_SIZE)
.forEach(batchIndex -> {
int startIndex = batchIndex * BATCH_SIZE;
int endIndex = Math.min((batchIndex + 1) * BATCH_SIZE, dataQualityRuleResultDocumentList.size());
List<Document> batch = dataQualityRuleResultDocumentList.subList(startIndex, endIndex);
执行批量插入
MongoDb.getMongoCollection(DataQualityRuleResultDocument.COLLECTION_NAME).insertMany(batch, new InsertManyOptions().ordered(false));
});
将总数据按指定数量分批:IntStream.range() ,防止超出但又不足一批的数量:(dataQualityRuleResultDocumentList.size() +
(BATCH_SIZE - 1) / BATCH_SIZE
batchIndex 批次 startIndex 开始索引 endIndex 结束索引 通过将批次索引加1再乘以每批的大小来得到的,但是不能超过列表的实际大小Math.min来确保