MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak używać zapytania agregującego z MongoItemReader w wiosennej partii?

rozszerz MongoItemReader i udostępnij własną implementację dla metody doPageRead(). W ten sposób będziesz mieć pełne wsparcie dla stronicowania, a to czytanie dokumentów będzie częścią kroku.

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();

}
}

I inne pobierające i ustawiające oraz inne metody. Wystarczy spojrzeć na kod źródłowy MongoItemReader tutaj .Usunąłem również z niego obsługę zapytań. Możesz mieć to również w tej samej metodzie, po prostu skopiuj i wklej z MongoItemReader. To samo z sortowaniem.

A w klasie, w której masz czytelnika, zrobiłbyś coś takiego:

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. MongoDb Select Query Problem z odrobiną wyrażenia regularnego (rozpoczyna się odrobina i kończy odrobina)

  2. Szybkość żądań CosmosDb jest duża z insertMany

  3. Jakie jest lepsze podejście do przechowywania i przeszukiwania dużego zbioru danych meteorologicznych?

  4. Wykonywanie zapytań, filtrowanie i aktualizowanie wielopoziomowych tablic zagnieżdżonych w MongoDB przy użyciu C#

  5. Importuj dane do MongoDB za pomocą Docker-Compose