springdata MongoDB批量插入带有continueOnError选项

时间:2014-02-24 01:04:47

标签: mongodb spring-data-mongodb batch-insert

MongoDB支持continueOnError选项,因此即使单个文档插入失败,批量插入也会继续。

有没有办法使用spring-data版本1.3.3.RELEASE实现这一目标。我正在使用MongoOperations类,我没有看到允许我这样做的API。

谢谢!

1 个答案:

答案 0 :(得分:2)

您应该通过writeConcern

MongoTemplate选项进行设置
mongoTemplate.setWriteConcern( 
    new WriteConcern(<Your options>).continueOnErrorForInsert(true));

或者,WriteConcern也应该有一个构造函数来执行此操作。

更具体地说,作为一种用法,我在配置类中设置了一个Bean:

public @Bean
MongoTemplate mongoTemplate() throws Exception {
    MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory());

    WriteConcern writeConcern = new WriteConcern(2);
    writeConcern.continueOnErrorForInsert(true);

    mongoTemplate.setWriteConcern(writeConcern);

    return mongoTemplate;
}

然后,设置操作:

    MongoOperations mongoOperation = (MongoOperations) ctx.getBean("mongoTemplate");

    Collection collection = new Collection() { ... }

    mongoOperation.insert(collection,"collection");   // Uses the writeConcern options