对MongoDB'中的重复唯一密钥错误作出反应;s的java驱动程序

对MongoDB'中的重复唯一密钥错误作出反应;s的java驱动程序,java,mongodb,Java,Mongodb,我正在开发一个使用MongoDB的应用程序,我的一个领域必须是唯一的。此字段由应用程序根据DB中的另一个值计算。但是,如果我运行应用程序的多个实例,我可以想象应用程序计算相同的值 在这种情况下,我希望捕获异常,重新计算值,然后重试。不幸的是,引发的异常似乎是一个简单的MongoWriteException。在我看来,我知道这是由于重复密钥问题导致的唯一方法是基于异常消息,但是解析和使用该消息确实感觉不正确。是否还有其他选项?您可以使用getCategory()检查内部错误的原因,并确认它是由于重

我正在开发一个使用MongoDB的应用程序,我的一个领域必须是唯一的。此字段由应用程序根据DB中的另一个值计算。但是,如果我运行应用程序的多个实例,我可以想象应用程序计算相同的值

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

您可以使用
getCategory()
检查内部错误的原因,并确认它是由于重复的键造成的:

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