我正在使用 Mongo DB java 驱动程序:
collection.bulkWrite(documents);
我有 100 万条记录要插入。如果其中一条记录的插入失败,则在第一次失败时将不会插入剩余的记录。
为了避免这种情况,我发现 BulkWriteOptions
的 ordered
为 false
;
collection.bulkWrite(documents, new BulkWriteOptions().ordered(false) )
如果上述操作出现异常,是否可以得到bulkwrite
失败的记录列表,是否可以重新尝试插入这些记录?
最佳答案
我认为您正在寻找类似的东西..
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
}
}
关于mongodb - 在 MongoDB java 中使用 ordered as false 批量写入时处理异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35168361/