2

我正在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");
4

1 回答 1

3

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

从文档中,

使用此写关注点的写操作将在返回之前等待主服务器的确认。网络问题和服务器错误会引发异常。

于 2014-12-28T07:14:01.493 回答