Tham gia Node.js MongoDB
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 ngoài bên trái bằng cách sử dụng giai đoạn $lookup
.
Giai đoạn $lookup
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à trường nào sẽ khớ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":
mệnh lệnh
[
{ _id: 1, product_id:
154, status: 1 }
]
các sản phẩm
[
{ _id: 154, name:
'Chocolate Heaven' },
{ _id: 155, name: 'Tasty Lemons' },
{
_id: 156, name: 'Vanilla Dreams' }
]
Ví dụ
Nối (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();
});
});
Chạy ví dụ »Lưu mã ở trên vào một 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ẽ 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 phù hợp từ bộ sưu tập sản phẩm được đưa vào bộ sưu tập đơn hàng dưới dạng một mảng.