在 MongoDB java 中批量写入时处理异常 ordered as false

svs*_*eja 4 mongodb mongodb-java mongodb-query

我正在使用 Mongo DB java 驱动程序:

collection.bulkWrite(documents);
Run Code Online (Sandbox Code Playgroud)

我有 100 万条记录要插入。如果其中一条记录的插入失败,则在第一次失败时,剩余的记录将不会被插入。为了避免这种情况,我发现有BulkWriteOptionswith orderedas false;

collection.bulkWrite(documents, new BulkWriteOptions().ordered(false) )
Run Code Online (Sandbox Code Playgroud)

如果上述操作过程中出现异常,我们能否获取失败的记录列表bulkwrite,并再次尝试插入这些记录?

Ash*_*tav 5

我想你正在寻找类似的东西..

BulkWriteOptions bulkWriteOptions = new BulkWriteOptions();
bulkWriteOptions.ordered(true);

BulkWriteResult bulkWriteResult = null;
try {
    bulkWriteResult = mongoCollection.bulkWrite(updateDocuments,
            bulkWriteOptions);
} catch (BulkWriteException e) {
    List<BulkWriteError> bulkWriteErrors = e.getWriteErrors();
    for (BulkWriteError bulkWriteError : bulkWriteErrors) {
        int failedIndex = bulkWriteError.getIndex();
        Long failedEntity = entityList.get(failedIndex);
        System.out.println("Failed record: " + failedEntity);
        //handle rollback
    }
}
Run Code Online (Sandbox Code Playgroud)