MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Làm cách nào để thực hiện các phép nối lồng nhau (tham gia 3 hoặc nhiều bộ sưu tập) trong một đường dẫn tổng hợp MongoDB?

Thực hiện tra cứu lồng nhau bằng cách sử dụng tra cứu bằng đường dẫn ,

  • $lookup với orders bộ sưu tập,
    • let , xác định biến customer_id đó là từ bộ sưu tập chính, để truy cập biến tham chiếu này bên trong đường ống bằng cách sử dụng $$ như $$customer_id ,
    • pipeline có thể thêm các giai đoạn đường ống giống như chúng ta làm trong đường ống cấp cơ sở
    • $expr bất cứ khi nào chúng tôi đối sánh các trường nội bộ, nó yêu cầu điều kiện đối sánh biểu thức, vì vậy $$customer_id là trường tập hợp mẹ được khai báo trong let$customer_id là trường của bộ sưu tập con / bộ sưu tập hiện tại
  • $lookup với orderitems bộ sưu tập
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"
    }
  }
])

Sân chơi




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Truy vấn trên MongoDB Xóa kích hoạt

  2. Làm thế nào để xử lý đúng cách di chuyển giản đồ mongoose?

  3. Làm cách nào để xóa các tweet trống bằng filter () trong pyspark?

  4. cách tạo mongoDB objectid trong java

  5. Không thể truy cập thuộc tính đối tượng của phản hồi Mongoose