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

ネストされたルックアップを含むMongodbAggregateComplex Document

    $unwindを実行しました 2回なので、2つの$groupを使用する必要があります 。

    {
      $group: {
        _id: {
          secId: "$_id",
          fId: "$Sections.id"
        },
        Type: {
          $first: "$Type"
        },
        Name: {
          $first: "$Name"
        },
        Header: {
          $first: "$Sections.Header"
        },
        fieldItems: {
          $push: "$Sections.FieldItems"
        }
      }
    },
    {
      $group: {
        _id: "$_id.secId",
        Type: {
          $first: "$Type"
        },
        Name: {
          $first: "$Name"
        },
        Sections: {
          $push: {
            id: "$_id.fId",
            Header: "$Header",
            fieldItems: "$fieldItems"
          }
        }
      }
    }
    
    1. 最初のグループ-子オブジェクトをグループ化します。ただし、タイプ、名前、ヘッダー 親配列と子配列にそれぞれ設定する必要があります。
    2. 2番目のグループ-親オブジェクトをグループ化します。子をグループ化するときに、すべてのスタンドアロンフィールドを取得します。ここでは、正しい鉱石に設定する必要があります。

    モンゴの遊び場 で働く

    注:$lookupを使用する場合 、配列を提供します。しかし、あなたがそれをオブジェクトとして作る場所がいくつかあります。あなたが1対1の関係で参加しているかどうかはわかりません。その場合は、射影の位置演算子 を使用できます。 または arrayElemAt




    1. 一意のフィールドにdupキーエラーを与えるMongo:false

    2. mongo export SyntaxError:欠落;ステートメントの前@(shell):1:14

    3. rmongodbを使用してRをリモートmongoDBに接続します

    4. ドキュメントデータベース:冗長データ、参照など(特にMongoDB)