Node.js MongoDB Tham gia


Tham gia Bộ sưu tập

MongoDB không phải là cơ sở dữ liệu quan hệ, nhưng bạn có thể thực hiện phép nối bên ngoài bên trái bằng cách sử dụng $lookupgiai đoạn.

Giai $lookupđoạn này cho phép bạn chỉ định bộ sưu tập nào bạn muốn kết hợp với bộ sưu tập hiện tại và những trường nào phù hợp.

Hãy xem xét bạn có bộ sưu tập "đơn đặt hàng" và bộ sưu tập "sản phẩm":

đơn đặt hàng

[
  { _id: 1, product_id: 154, status: 1 }
]

Mỹ phẩm

[
  { _id: 154, name: 'Chocolate Heaven' },
  { _id: 155, name: 'Tasty Lemons' },
  { _id: 156, name: 'Vanilla Dreams' }
]

Thí dụ

Kết hợp (các) tài liệu "sản phẩm" phù hợp với bộ sưu tập "đơn đặt hàng":

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://127.0.0.1:27017/";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db.db("mydb");
  dbo.collection('orders').aggregate([
    { $lookup:
       {
         from: 'products',
         localField: 'product_id',
         foreignField: '_id',
         as: 'orderdetails'
       }
     }
    ]).toArray(function(err, res) {
    if (err) throw err;
    console.log(JSON.stringify(res));
    db.close();
  });
});

Lưu đoạn mã trên vào tệp có tên "demo_mongodb_join.js" và chạy tệp:

Chạy "demo_mongodb_join.js"

C:\Users\Your Name>node demo_mongodb_join.js

Điều này sẽ cung cấp cho bạn kết quả này:

[
  { "_id": 1, "product_id": 154, "status": 1, "orderdetails": [
    { "_id": 154, "name": "Chocolate Heaven" } ]
  }
]

Như bạn có thể thấy từ kết quả ở trên, tài liệu khớp từ bộ sưu tập sản phẩm được bao gồm trong bộ sưu tập đơn đặt hàng dưới dạng một mảng.