如何在Mongo BulkInsert重试中处理“重复错误”

问题描述 投票:0回答:1

我正在使用bulkWrite操作(Java驱动程序3.12)将大量文档插入到Mongo DB中。在连接中断的情况下,我还实现了重试机制。

但是随后的重试中存在问题:由于在先前的尝试中插入了某些文档,因此后续的尝试会导致Duplicate Key error

    @Autorwire  
    private ReactiveMongoOperations operations
    operations
        .execute(Document.class, collection ->
 collection.bulkWrite(insertOneRequests, new BulkWriteOptions().ordered(false)
        .bypassDocumentValidation(true)))
        .retryWhen(Retry.any().fixedBackoff(Duration.ofMillis(backoffDuration)).retryMax(retryCount)
        .doOnRetry(retryContext -> log.info("Retry"));

是否有一种方法可以在随后的重试中忽略“重复键错误”?

鉴于这并非不常见的情况,通常如何处理?假设在这种情况下,我试图避免使用“ Upsert”(替换)操作。

mongodb bulkinsert on-duplicate-key
1个回答
0
投票

来自此:

“批量操作将尝试插入您提供的要插入的每个文档。如果文档已存在于集合中,则不会插入该文档(由于重复键错误),并且将尝试下一个文档的插入操作。请注意,将在所有提供的文档上尝试插入。“

MongoDB bulkwrite操作已经完成了我所期望的。只需要在我的报告中取消“重复键错误”。

© www.soinside.com 2019 - 2024. All rights reserved.