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

Spring Data Mongo-Distinctを実行しますが、結果に埋め込まれたドキュメントをプルしたくない

    集計は、個別のdepartments.deptCdを取得します 値(およびその他の詳細):

    db.collection.aggregate( [
    {
        $group: { _id: "$departments.deptCd", 
                 deptName: { $first: "$departments.deptName" },
                 status: { $first: "$departments.status" }
        }
    },
    {
        $project: { deptCd: "$_id", _id: 0, deptName: 1, status: 1 }
    }
    ] )
    

    出力:

    { "deptName" : "Tax Handling Dept", "status" : "A", "deptCd" : "Tax" }
    

    [編集追加]

    Spring Data MongoDB v2.2.7を使用したコード:

    MongoOperations mongoOps = new MongoTemplate(MongoClients.create(), "testdb");
    Aggregation agg = Aggregation.newAggregation(
        Aggregation.group("departments.deptCd")
            .first("departments.deptName").as("deptName")
            .first("departments.status").as("status"),
        Aggregation.project("deptName", "status")
            .and("_id").as("deptCd")
            .andExclude("_id")
    );
    AggregationResults<Document> results = mongoOps.aggregate(agg, "collection", Document.class);
    results.forEach(System.out::println);
    



    1. Mongoアグリゲーション:値をグループに分割する

    2. フィールド名にドットを使用する方法は?

    3. MongoDbとmorphiaのパスワードとユーザー名

    4. mongodbの集約で複数のグループを組み合わせる