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

mongo集約フレームワークを使用して配列の特定の要素でグループ化

    配列の最初にいる各人の好きな食べ物に頼っているようです。もしそうなら、あなたが利用できる集約フレームワーク演算子があります。

    使用できるパイプラインは次のとおりです。

    db.people.aggregate(
    [
        {
            "$unwind" : "$favourite_foods"
        },
        {
            "$group" : {
                "_id" : {
                    "name" : "$name",
                    "height" : "$height"
                },
                "faveFood" : {
                    "$first" : "$favourite_foods"
                }
            }
        },
        {
            "$group" : {
                "_id" : "$faveFood.name",
                "height" : {
                    "$max" : "$_id.height"
                }
            }
        }
    ])
    

    このサンプルデータセットについて:

    > db.people.find().pretty()
    {
        "_id" : ObjectId("508894efd4197aa2b9490741"),
        "name" : "Russell",
        "favourite_foods" : [
            {
                "name" : "Pizza",
                "type" : "Four Cheeses"
            },
            {
                "name" : "Burger",
                "type" : "Veggie"
            }
        ],
        "height" : 6
    }
    {
        "_id" : ObjectId("5088950bd4197aa2b9490742"),
        "name" : "Lucy",
        "favourite_foods" : [
            {
                "name" : "Pasta",
                "type" : "Four Cheeses"
            },
            {
                "name" : "Burger",
                "type" : "Veggie"
            }
        ],
        "height" : 5.5
    }
    {
        "_id" : ObjectId("5088951dd4197aa2b9490743"),
        "name" : "Landy",
        "favourite_foods" : [
            {
                "name" : "Pizza",
                "type" : "Four Cheeses"
            },
            {
                "name" : "Pizza",
                "type" : "Veggie"
            }
        ],
        "height" : 5
    }
    {
        "_id" : ObjectId("50889541d4197aa2b9490744"),
        "name" : "Augie",
        "favourite_foods" : [
            {
                "name" : "Sushi",
                "type" : "Four Cheeses"
            },
            {
                "name" : "Pizza",
                "type" : "Veggie"
            }
        ],
        "height" : 6.2
    }
    

    次の結果が得られます:

    {
        "result" : [
            {
                "_id" : "Pasta",
                "height" : 5.5
            },
            {
                "_id" : "Pizza",
                "height" : 6
            },
            {
                "_id" : "Sushi",
                "height" : 6.2
            }
        ],
        "ok" : 1
    }
    


    1. ASP.NETセッション状態プロバイダーを使用してRedisサーバーに接続できません

    2. CentOS8にApacheCouchDBをインストールする方法

    3. フィールドプロジェクションでbatchSizeフィールド名が無視されました

    4. Mongodbは深くネストされたサブドキュメントを更新します