MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да използвате заявка за агрегиране с MongoItemReader в пролетен пакет

разширете MongoItemReader и осигурете своя собствена реализация за метода doPageRead(). По този начин ще имате пълна поддръжка за пагиниране и това четене на документи ще бъде част от стъпка.

public class CustomMongoItemReader<T, O> extends MongoItemReader<T> {
private MongoTemplate template;
private Class<? extends T> inputType;
private Class<O> outputType
private MatchOperation match;
private ProjectionOperation projection;
private String collection;

@Override
protected Iterator<T> doPageRead() {
    Pageable page = PageRequest.of(page, pageSize) //page and page size are coming from the class that MongoItemReader extends
    Aggregation agg = newAggregation(match, projection, skip(page.getPageNumber() * page.getPageSize()), limit(page.getPageSize()));
    return (Iterator<T>) template.aggregate(agg, collection, outputType).iterator();

}
}

И други гетери и сетери и други методи. Просто погледнете изходния код за MongoItemReader тук .Премахнах и поддръжката на Query от него. Можете да го имате и в същия метод, просто го копирайте и поставете от MongoItemReader. Същото и със сортиране.

И в класа, където имате четец, бихте направили нещо като:

public MongoItemReader<T> reader() {
    CustomMongoItemReader reader = new CustomMongoItemReader();
    reader.setTemplate(mongoTemplate);
    reader.setName("abc");
    reader.setTargetType(input.class);
    reader.setOutputType(output.class);
    reader.setCollection(myMongoCollection);
    reader.setMatch(Aggregation.match(new Criteria()....)));
    reader.setProjection(Aggregation.project("..","..");
    return reader;
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да предам параметър от docker-compose към услуга, изпълнявана в docker изображение?

  2. MongoDB безкраен Find ToListAsync

  3. Проверете дали полето съществува с MongoDB

  4. MongoDB:Как да представим схематична диаграма в дипломна работа?

  5. Резервен план на MongoDB