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

Làm cách nào để thực hiện tìm kiếm $ lookup lồng nhau trong MongoDB?

$lookup 3,6 cú pháp cho phép bạn tham gia các bảng lồng nhau và $unwind để giải cấu trúc một trường mảng từ các tài liệu đầu vào để xuất ra một tài liệu cho mỗi phần tử. Một cái gì đó như thế này

position.aggregate([
  { "$lookup": {
    "from": "companies",
    "let": { "companyId": "$company_id" },
    "pipeline": [
      { "$match": { "$expr": { "$eq": [ "$_id", "$$companyId" ] } } },
      { "$lookup": {
        "from": "industries",
        "let": { "industry_id": "$industry_id" },
        "pipeline": [
          { "$match": { "$expr": { "$eq": [ "$_id", "$$industry_id" ] } } }
        ],
        "as": "industry"
      }},
      { "$unwind": "$industry" }
    ],
    "as": "company"
  }},
  { "$unwind": "$company" }
])

Với phiên bản 3.4

position.aggregate([
  { "$lookup": {
    "from": "companies",
    "localField": "company_id",
    "foreignField": "_id",
    "as": "companies"
  }},
  { "$unwind": "$companies" },
  { "$lookup": {
    "from": "industries",
    "localField": "companies.industry_id",
    "foreignField": "_id",
    "as": "companies.industry"
  }},
  { "$unwind": "$companies.industry" },
  { "$group": {
    "_id": "$_id",
    "companies": { "$push": "$companies" }
  }}
])



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Chỉ mục một phần trong mongodb / mongoose

  2. Các cách triển khai lập phiên bản dữ liệu trong MongoDB

  3. Tại sao Mongoose thêm mảng trống?

  4. Làm thế nào để thực hiện addToSet bằng cách sử dụng trình điều khiển chính thức của Go?

  5. Thêm trường không có trong giản đồ với mongoose