Join Collection Trong MongoDB Trên Node.js
Có thể bạn quan tâm
Như các bạn đã biết thì ở các cơ sở dữ liệu quan hệ các table được liên kết với nhau bằng các khóa ngoại và kháo chính. Và MongoDB không phải là cơ sở dữ liệu quan hệ, nhưng nó cũng hỗ trợ chúng ta join các collection lại với nhau.
1, Join collection trong MongoDB trên Node.js.
-Để có thể join các collection lại với nhau được thì các collection đó phải có ít nhất 1 điểm chung. Tiếp theo đó bạn sử dụng cú pháp sau để join giữa 2 bảng:
db.collection(collection1).aggregate([ { $lookup: { from: 'collection2', localField: 'colection2_id', foreignField: 'collection1_id', as: 'fieldName' } } ], function(err, res) { //handle }); });Trong đó:
- collection1 là collection mà bạn muốn thực thi truy vấn.
- collection2 là collection mà bạn muốn join với collection1.
- collection2_id là trường có điểm chung của collection2.
- colleciton1_id là trường có điểm chung của collection1.
- fieldName là key mà bạn muốn đặt cho trường chứa phép join.
2, Ví Dụ.
-Giả sử chúng ta có 2 collection products và categories như sau:
- product:
- categories:
Và Đây là code join products vào trong categories.
const mongoClient = require('mongodb').MongoClient; mongoClient.connect('mongodb://127.0.0.1:27017/nodejoin', function(err, db) { if (err) throw err; const col = db.collection('categories') col.aggregate([ {$lookup: { from: 'products', localField: '_id', foreignField: 'category_id', as: 'productList' }} ],function (err,res) { if (err) throw err; console.log(res); }); });Kết Quả:
[{ _id: 1, name: 'Quan', productList: [{ _id: 3, name: 'Quan bo', price: 150000, category_id: 1 }, { _id: 4, name: 'Quan tho', price: 250000, category_id: 1 } ] }, { _id: 2, name: 'Ao', productList: [{ _id: 1, name: 'Ao thun', price: 50000, category_id: 2 }, { _id: 2, name: 'Ao phong', price: 80000, category_id: 2 } ] } ]Và ngược lại bạn cũng có thể join categories vào trong products:
const mongoClient = require('mongodb').MongoClient; mongoClient.connect('mongodb://127.0.0.1:27017/nodejoin', function(err, db) { if (err) throw err; const col = db.collection('products') col.aggregate([ {$lookup: { from: 'categories', localField: 'category_id', foreignField: '_id', as: 'category' }} ],function (err,res) { if (err) throw err; console.log(res); }); });Kết quả:
[{ _id: 1, name: 'Ao thun', price: 50000, category_id: 2, category: [{ _id: 2, name: 'Ao' }] }, { _id: 2, name: 'Ao phong', price: 80000, category_id: 2, category: [{ _id: 2, name: 'Ao' }] }, { _id: 3, name: 'Quan bo', price: 150000, category_id: 1, category: [{ _id: 1, name: 'Quan' }] }, { _id: 4, name: 'Quan tho', price: 250000, category_id: 1, category: [{ _id: 1, name: 'Quan' }] } ]3, Lời kết.
-Phần trên chỉ là mình giới thiệu thêm về chức năng join collection trong MongoDB thôi, còn trên thực tế thì khi sử dụng MongoDB thì chúng ta có thể lưu giữ liệu trực tiếp mà không cần phải join.
VD:
{_id: 4, name: 'Quan tho', price: 250000, category: 'Quan'}Từ khóa » Join Bảng Trong Mongodb
-
So Sánh JOINS Trong MongoDB Và PostgreSQL - Viblo
-
Join Nhiều Document Trong Mongodb Thế Nào | A Community Node.js
-
Node.js MongoDB Join - W3Schools
-
Làm Cách Nào để Tôi Thực Hiện SQL Join Tương đương Trong ...
-
3 Cách Tiếp Cận để Tạo SQL-Join Tương đương Trong MongoDB
-
Cách Nối Hai Bảng Trong đó Một Bảng Chứa Danh Sách ID Của Một ...
-
MongoDB - Xin Chào! Mình Là Dzung
-
Những Câu Lệnh Cơ Bản Trong MongoDB - TRẦN VĂN BÌNH MASTER
-
Populate Trong Mongoose
-
Sử Dụng JOIN Trong SQLite - Hoclaptrinh
-
Mô Hình Hóa Dữ Liệu Trong MongoDB - Vi
-
CẬP NHẬT SQL Với JOIN - W3seo Sử Dụng Update Và Join
-
Tối ưu Truy Vấn Db | TechHay Blog
-
How To Join Data In MongoDB - Rockset