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

MongoDB集約パイプラインでネストされた結合(3つ以上のコレクションを結合する)を実行するにはどうすればよいですか?

    を使用してネストされたルックアップを実行しますパイプラインによるルックアップ

    • $lookup orders コレクション、
      • let 、変数customer_idを定義します これはメインコレクションからのもので、$$を使用してパイプライン内のこの参照変数にアクセスします $$customer_idのように 、
      • pipeline ルートレベルのパイプラインと同じようにパイプラインステージを追加できます
      • $expr 内部フィールドに一致する場合は常に式の一致条件が必要なので、$$customer_id letで宣言された親コレクションフィールドです および$customer_id 子コレクション/現在のコレクションのフィールドです
    • $lookup orderitemsを使用 コレクション
    db.customers.aggregate([
      {
        $lookup: {
          from: "orders",
          let: { customer_id: "$customer_id" },
          pipeline: [
            { $match: { $expr: { $eq: ["$$customer_id", "$customer_id"] } } },
            {
              $lookup: {
                from: "orderitems",
                localField: "order_id",
                foreignField: "order_id",
                as: "items"
              }
            }
          ],
          as: "orders"
        }
      }
    ])
    

    遊び場




    1. PyMongoでコレクションオブジェクトを呼び出せないエラー

    2. node.jsを使用してmongodbに画像を保存するにはどうすればよいですか?

    3. フィールド間のMongoDBSpringデータの比較

    4. GoとMongoDB接続は、到達可能なサーバーがないパニックログでは機能しません