【发布时间】:2017-08-14 10:16:25
【问题描述】:
我正在使用 spring-data-mongodb 并且有一个简单的存储库,它配置了以下配置:
@Configuration
@EnableMongoRepositories(basePackages = "com.my.package")
@Profile("default")
public class MongoConfig extends AbstractMongoConfiguration {
@Value("${mongo.db.uri}")
private String mongoDbUri;
@Value("${mongo.db.database}")
private String mongoDbDatabaseName;
@Override
protected String getDatabaseName() {
return mongoDbDatabaseName;
}
@Override
public MongoClient mongoClient() {
return new MongoClient(new MongoClientURI(mongoDbUri));
}
}
使用的存储库扩展了 CrudRepository,这使得我可以调用 saveAll() 方法。默认情况下,当一条记录失败时,在 mongodb 中执行 saveAll(批量操作)将停止,除非将选项传递给 insertMany/updateMany 命令以使“continueOnError”为 true 或具有“BulkMode.unordered”。有什么方法可以将 spring 数据配置为始终在出错时继续(或始终进行无序插入/更新),这样即使某些记录失败,执行 saveAll 也将始终尝试整个批量?
谢谢!
【问题讨论】:
-
在an older version of the MongoDb driver 中可以使用WriteConcern.continueOnError() 设置此行为。然而,这已从 api 中删除。
标签: mongodb spring-data-mongodb