溫馨提示×

MongoDB聚合管道查詢怎樣進行連接

小樊
117
2024-10-30 15:00:24
欄目: 云計算

在MongoDB中,聚合管道查詢可以通過$lookup操作符來實現連接(join)操作。$lookup允許你將來自另一個集合的文檔與當前集合的文檔進行連接。以下是一個簡單的示例:

假設我們有兩個集合:orderscustomers。orders集合包含訂單信息,customers集合包含客戶信息。我們想要查詢每個訂單及其對應的客戶信息。

orders集合:

{
  "_id": 1,
  "customer_id": 1,
  "product": "Laptop",
  "price": 1000
}

customers集合:

{
  "_id": 1,
  "name": "John Doe",
  "email": "john.doe@example.com"
}

我們可以使用以下聚合管道查詢來連接這兩個集合:

db.orders.aggregate([
  {
    $lookup: {
      from: "customers",
      localField: "customer_id",
      foreignField: "_id",
      as: "customer_info"
    }
  },
  {
    $unwind: "$customer_info"
  },
  {
    $project: {
      _id: 1,
      customer_id: 1,
      product: 1,
      price: 1,
      customer_name: "$customer_info.name",
      customer_email: "$customer_info.email"
    }
  }
])

這個查詢的工作原理如下:

  1. $lookup操作符從customers集合中查找與orders集合中的customer_id相匹配的文檔,并將結果存儲在名為customer_info的新數組字段中。
  2. $unwind操作符將customer_info數組拆分為多個文檔,每個文檔包含一個客戶信息。
  3. $project操作符重新構造輸出文檔,將客戶名稱和電子郵件字段分別重命名為customer_namecustomer_email。

查詢結果:

{
  "_id": 1,
  "customer_id": 1,
  "product": "Laptop",
  "price": 1000,
  "customer_name": "John Doe",
  "customer_email": "john.doe@example.com"
}

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女