java mongodb驱动程序在重复键上没有异常抛出

时间:2014-12-26 19:58:47

标签: java spring mongodb mongo-java mongotemplate

我正在spring framework使用mongoTemplate。 bean启动:

public
@Bean
MongoTemplate mongoTemplate() throws Exception {
    MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory());
    mongoTemplate.setWriteResultChecking(WriteResultChecking.EXCEPTION);

    return mongoTemplate;
}

简而言之,此代码在重复键上不会失败

collection= mTemplate.getCollection("col");
try {
        final WriteResult writeResult = collection.insert(edge);

} catch (DuplicateKeyException e) {
        log.warn("@error> edge already exists");

        return null;
}

writeResult._lastErrorResult不为空并且有相关错误。

我要插入的文件: 此外,我试图抓住Exception e但没有成功。

collection.createIndex(new BasicDBObject("a", 1).append(, 1), unique);
DbObject edge = new BasicDBObject("a", "123").append("b", "345");

1 个答案:

答案 0 :(得分:3)

您需要将MongoDB驱动程序的WriteConcern设置为Acknowledged

来自文档,

  

使用此写入问题的写操作将等待   在返回之前从主服务器确认。例外   引发网络问题和服务器错误。