在MongoDB的Java驱动程序中做出反应以重复唯一键错误

时间:2019-02-05 19:35:33

标签: java mongodb

我正在开发一个使用MongoDB的应用程序,并且我的字段之一必须是唯一的。该字段由应用程序根据数据库中的另一个值计算。但是,如果我正在运行该应用程序的多个实例,则可以想象这些应用程序在计算相同的值。

在这种情况下,我想捕获异常,重新计算该值,然后重试。不幸的是,引发的异常似乎是一个简单的MongoWriteException。在我看来,我唯一知道这是由于重复的密钥问题引起的,是基于异常消息的,但是解析和使用该消息确实感觉不对。还有其他选择吗?

1 个答案:

答案 0 :(得分:1)

您可以使用getCategory()检查ErrorCategory中错误的MongoWriteException并确认是由于重复的键引起的:

catch(MongoWriteException ex) {
    if(ex.getError().getCategory() == ErrorCategory.DUPLICATE_KEY) {
        //handle duplicate key error
    } else {
        //do something else...
    }
}