在我的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()方法
中设置限制和跳过选项答案 0 :(得分:0)
MongoItemReader
利用分页作为返回数据而不是游标的机制。由于没有完整数据集的光标,因此不能使用MongoDB cursor#skip
和cursor#limit
。要获得您想要做的事情,您必须实施自己的MongoItemReader
。话虽如此,如果您觉得它对其他人有用,我们将感激您的贡献!