sql >> データベース >  >> NoSQL >> MongoDB

SpringBatchでMongoItemReaderでAggregationQueryを使用する方法

    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のソースコードをご覧くださいここ 。また、クエリのサポートも削除しました。同じメソッドで、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. mongoDBに再接続の問題がありますか、それとも間違っていますか?

    2. 最もよく知られているNoSQLシステム間の主な違い/機能

    3. MongoDBへの接続を確認しています

    4. mongodbのドキュメント構造をmongoシェルで変更する