モンゴ DB で多重結合を実行する方法

MongoDBでは、アグリゲーションパイプラインを使用して、複数のテーブルを結合できます。アグリゲーションパイプラインは、1つのクエリで複数のコレクションを操作し、結果をまとめることができます。

集約パイプラインを使用して複数のテーブルに対してジョインを実行する例を次に示します。

db.collection1.aggregate([
  {
    $lookup: {
      from: "collection2",
      localField: "field1",
      foreignField: "field2",
      as: "result"
    }
  }
])

コレクション1が最初にクエリされるコレクション、コレクション2が2番目に結合されるコレクション。localFieldとforeignFieldはそれぞれ、2つのコレクション間の関連付けフィールドを指定します。asパラメーターは、結合結果が保存されるフィールドの指定に使用されます。

2つのコレクションに関連付けられたフィールドがマッチするレコードを含むドキュメントの配列を返します。

また、集約パイプラインには、$lookup による多重テーブルの結合に加えて、$match、$project、$unwind などの各種の演算子とステージが備わっており、結合結果のさらなるフィルタリング、再構築、操作に利用できます。

なお、MongoDB での多重結合は、特にデータセットが大規模でクエリ条件が複雑な場合は比較的高コストとなる場合があることに注意してください。頻繁な多重結合が必要な場合は、埋め込みドキュメントまたは参照ドキュメントのデータモデルを採用してクエリパフォーマンスを最適化することを検討してください。

bannerAds