溫馨提示×

MongoDB聚合管道查詢怎樣進(jìn)行連接

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

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

假設(shè)我們有兩個集合:orderscustomersorders集合包含訂單信息,customers集合包含客戶信息。我們想要查詢每個訂單及其對應(yīng)的客戶信息。

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相匹配的文檔,并將結(jié)果存儲在名為customer_info的新數(shù)組字段中。
  2. $unwind操作符將customer_info數(shù)組拆分為多個文檔,每個文檔包含一個客戶信息。
  3. $project操作符重新構(gòu)造輸出文檔,將客戶名稱和電子郵件字段分別重命名為customer_namecustomer_email。

查詢結(jié)果:

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

0