在我的春季批处理应用程序中,我需要将数据从mongoDB迁移到postgreSQL。
我正在使用MongoItemReader读取数据。可以通过设置一些属性(例如查询,排序,字段等)来配置此阅读器。但是我不想从collection中读取所有数据,我只想读取其中的一部分,并通过“ 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()方法中设置限制并跳过选项
最佳答案
MongoItemReader
利用分页作为返回数据而不是游标的机制。由于没有完整数据集的游标,因此不能使用MongoDB的cursor#skip
和cursor#limit
。要获得您想做的事,您必须实现自己的MongoItemReader
。话虽如此,如果您觉得对他人有用,我们将不胜感激!
关于java - 限制和跳过MongoItemReader中的选项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26627332/