MongoItemReader中的限制和跳过选项

时间:2014-10-29 10:00:19

标签: java spring mongodb spring-batch

在我的spring批处理应用程序中,我需要将数据从mongoDB迁移到postgreSQL。 我正在使用MongoItemReader来读取数据。这个阅读器可以通过设置几个属性来配置,例如查询,排序,字段等。但我不想从集合中读取所有数据,我只想阅读其中的一部分,并通过'skip'和'获取此部分限制'游标属性。有没有能力通过这个课程这样做,或者我应该使用其他mongo读者来解决我的问题?

这是我的阅读器类的代码,它扩展了MongoItemReader。

public class MongoMigrateItemReader<T extends Migratable> extends MongoItemReader<T> implements ItemReader<T> {
    protected String collectionName;
    @Autowired
    MongoTemplate mongoTemplate;

    public MongoMigrateItemReader() {
    }

    @PostConstruct
    public void init() {
        Type type = ((ParameterizedType) this.getClass().getGenericSuperclass()).getActualTypeArguments()[0];
        Class<T> clazz = (Class<T>) type;
        this.setTemplate(mongoTemplate);
        this.setTargetType(clazz);
        this.setCollection(collectionName);
        this.setQuery("{}");
        HashMap<String, Sort.Direction> sort = new HashMap<>();
        sort.put("_id", Sort.Direction.ASC);
        this.setSort(sort);
    }

}

我想在init()方法

中设置限制和跳过选项

1 个答案:

答案 0 :(得分:0)

MongoItemReader利用分页作为返回数据而不是游标的机制。由于没有完整数据集的光标,因此不能使用MongoDB cursor#skipcursor#limit。要获得您想要做的事情,您必须实施自己的MongoItemReader。话虽如此,如果您觉得它对其他人有用,我们将感激您的贡献!