MongoDBで複数のテーブルを結合してクエリを行う方法

MongoDBでは主によく使用される複数のテーブルの結合を処理する方法が2つあり、それらはネストのクエリと参照のフィールドである。

  1. ネストクエリ(Embedding)ネストクエリ(Embedding)は、ドキュメント内に別のコレクションをネストする機能です。ネストクエリでは、関連するデータを一つのドキュメント中に保持することで、複数テーブル結合と同等のクエリが実行できます。
  2. ネイティブな日本語で言い換えた文を1つだけ提示する。
  3. ユーザーコレクションの作成:db.users.insertMany([
    { “_id” : “1”, “name” : “Tom”, “age” : 20, “address” : “ABC Street” },
    { “_id” : “2”, “name” : “John”, “age” : 25, “address” : “XYZ Street” },
    // …
    ])

    注文コレクションの作成:

    db.orders.insertMany([
    { “_id” : “1”, “userId” : “1”, “products” : [“product1”, “product2”], “amount” : 100 },
    { “_id” : “2”, “userId” : “2”, “products” : [“product3”], “amount” : 50 },
    // …
    ])

    ユーザーとその注文の照会:

    db.users.aggregate([
    {
    $lookup: {
    from: “orders”,
    localField: “_id”,
    foreignField: “userId”,
    as: “orders”
    }
    }
    ])

  4. 別のコレクションのドキュメントを、コレクション内のドキュメントから参照する。(参照されるコレクション内にフィールドを追加して別のコレクションのドキュメントを参照し、そのフィールドで関連クエリを行う。)
  5. ネイティブで日本語に言い換えてください。1つだけオプションが必要です。
  6. ユーザーコレクションを作成します。
    db.users.insertMany([
    { _id: “1”, name: “Tom”, age: 20, address: “ABC Street” },
    { _id: “2”, name: “John”, age: 25, address: “XYZ Street” },
    // …
    ])注文コレクションを作成します。
    db.orders.insertMany([
    { _id: “1”, userId: “1”, products: [“product1”, “product2”], amount: 100 },
    { _id: “2”, userId: “2”, products: [“product3”], amount: 50 },
    // …
    ])

    ユーザーとその注文を照会します。
    db.users.aggregate([
    {
    $lookup: {
    from: “orders”,
    localField: “_id”,
    foreignField: “userId”,
    as: “orders”
    }
    }
    ])

どちらの方法も一長一短があり、どちらを採用するかはデータの特徴や照会要求に依存します。

bannerAds