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

ネストされたmongodbドキュメントとキーピンググループでの発生をカウントします

    以下の集計を使用できます。

    質問と回答の両方でグループ化して組み合わせのカウントを取得し、次に質問でグループ化して回答とそのカウントを取得します。

    db.getCollection('testAggregate').aggregate([
      {"$group":{
        "_id":{"question":"$question","answer":"$answer"},
        "count":{"$sum":1}
      }},
      {"$group":{
        "_id":"$_id.question",
        "answers":{"$push":{"answer":"$_id.answer","count":"$count"}}
      }}
    ]);
    

    以下のコードを使用して、3.4で必要な形式を取得できます。

    $groupを変更します キーをkとvに入力し、続いて $addFields $arrayToObject 配列を名前付きキーと値のペアに変換します。

    db.getCollection('testAggregate').aggregate([
      {"$group":{
        "_id":{"question":"$question","answer":"$answer"},
        "count":{"$sum":1}
      }},
      {"$group":{
        "_id":"$_id.question",
        "answers":{"$push":{"k":"$_id.answer","v":"$count"}}
      }},
     {"$addFields":{"answers":{"$arrayToObject":"$answers"}}}
    ]);
    



    1. エラーコード11000と11001のMongoDBの違い

    2. jenssegers/laravel-mongodbの複数のDB接続を使用したLaravelの外部での雄弁

    3. MongoDB:--queryオプションを指定してmongoexportを使用する場合の問題

    4. 2022年のMongoDBチュートリアル– MongoDBとは何ですか?