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

MongoTemplateを使用してMongoDBのネストされたドキュメントにgroupbyを適用するにはどうすればよいですか?

    春のデータMongoTemplate 指定された集計のコードは次のとおりです。

    プロジェクトを追加したことに注意してください グループの前のステージ 。このプロジェクト 必要とされている;ネストされたフィールド("details.student._id"および"details.studentStatus.statusCode")がグループ内で直接使用されている場合 ステージにエラーがあります"FieldPath field names may not contain '.'." 解決できませんでした(これは、グループ化で複数のフィールドを使用した場合にのみ発生します)。

    結果は、指定した集計の結果と同じです。 Java8で最新のSpringおよびMongoDBドライバーを使用しました。

    MongoOperations mongoOps = new MongoTemplate(MongoClients.create(), "spr_test");
    
    Aggregation agg = newAggregation(
                                    unwind("details"),    
                                    project("_id")
                                        .and("details.student._id").as("sid")
                                        .and("details.studentStatus.statusCode").as("statuscode"),
                                    group("sid", "statuscode")
                                        .count().as("total")
    );
    
    AggregationResults<Document> aggResults = mongoOps.aggregate(agg, "students", Document.class);
    aggResults.forEach(System.out::println);
    



    1. WindowsシステムにMongoDBをインストールする方法は?

    2. 単語のMongoDBと全文検索部分

    3. MongoDB Aggregation:ダブルルックアップ、およびルックアップ応答をそれぞれのオブジェクトにマージ

    4. MongoDBdockerコンテナはソケットファイルのリンクを解除できませんでした