Giới thiệu về MongoDB $lookup
Trong MongoDB, $lookup là một phép toán (aggregation operator) được sử dụng để thực hiện phép nối (join) giữa hai bảng (collection) khác nhau. Nó cho phép bạn truy xuất dữ liệu từ một collection khác và kết hợp nó với dữ liệu trong collection hiện tại, tương tự như các phép nối trong SQL.
Định nghĩa
Phép toán $lookup giúp bạn tìm kiếm dữ liệu liên quan giữa hai collection, giúp cho việc thao tác và truy vấn dữ liệu phức tạp trở nên dễ dàng hơn. Cú pháp của $lookup cho phép bạn xác định collection mà bạn muốn nối, cũng như điều kiện nối giữa các collection đó.
Cú pháp
{ $lookup: { from:, localField: , foreignField: , as: } } - from: Tên của collection mà bạn muốn nối.
- localField: Trường trong collection hiện tại mà bạn sử dụng để tìm kiếm và nối dữ liệu.
- foreignField: Trường trong collection mà bạn đang nối mà sẽ được sử dụng để tìm kiếm dữ liệu tương ứng.
- as: Tên trường mà bạn muốn đặt cho dữ liệu kết quả sau khi thực hiện nối.
Ví dụ
Giả sử bạn có hai collection: students và courses. Collection students chứa thông tin sinh viên, và collection courses chứa thông tin khóa học mà sinh viên đã đăng ký. Cấu trúc dữ liệu có thể như sau:
students: { _id: 1, name: "John Doe", course_id: 101 }, { _id: 2, name: "Jane Smith", course_id: 102 } courses: { _id: 101, title: "MongoDB Basics" }, { _id: 102, title: "Advanced MongoDB" }Bây giờ, nếu bạn muốn lấy thông tin sinh viên cùng với thông tin khóa học mà họ đã đăng ký, bạn có thể sử dụng $lookup như sau:
db.students.aggregate([ { $lookup: { from: "courses", // Tên collection cần nối localField: "course_id", // Trường khóa từ collection students foreignField: "_id", // Trường khóa từ collection courses as: "course_info" // Tên trường kết quả } } ])Kết quả trả về sẽ là một danh sách các sinh viên cùng với thông tin khóa học tương ứng được đặt trong trường course_info.
Kết luận
Phép toán $lookup trong MongoDB là một công cụ mạnh mẽ cho phép bạn kết hợp dữ liệu từ nhiều nguồn khác nhau, giúp nâng cao khả năng phân tích và truy xuất dữ liệu của bạn. Bằng cách sử dụng $lookup, bạn có thể xây dựng các truy vấn phức tạp hơn một cách dễ dàng, từ đó tạo ra những báo cáo và phân tích dữ liệu chính xác hơn.
Trần Minh KhoaKhoa là một Backend Developer & System Architect với hơn 10 năm kinh nghiệm trong lĩnh vực lập trình backend, tối ưu hệ thống và phát triển kiến trúc phần mềm. Tôi có chuyên môn sâu về các ngôn ngữ backend phổ biến và từng tham gia nhiều dự án phát triển ứng dụng web, API, microservices với khả năng mở rộng cao. Bài này tôi viết với thời gian đọc khoảng 3 phút.