Hiểu về $match trong MongoDB
Khi làm việc với MongoDB, một trong những khái niệm quan trọng bạn sẽ gặp là giai đoạn $match trong quá trình xử lý Aggregation. Đây là một trong những giai đoạn đầu tiên trong chuỗi pipeline, giúp lọc tài liệu (documents) dựa trên các tiêu chí nhất định.
Định nghĩa
$match là một toán tử trong MongoDB được sử dụng để lọc tài liệu. Nó cho phép bạn xác định các điều kiện mà tài liệu phải thỏa mãn để được bao gồm trong kết quả cuối cùng. Thao tác này tương tự như mệnh đề WHERE trong SQL.
Cú pháp
Cú pháp của $match rất đơn giản. Nó nhận vào một đối tượng JSON trong đó các trường và giá trị được chỉ định để lọc tài liệu. Cú pháp cơ bản là:
{ $match: {: } }
Bên cạnh đó, bạn cũng có thể sử dụng các toán tử so sánh như $gt, $lt, $eq, $ne, $gte, $lte, và các toán tử logic như $and, $or trong các điều kiện của $match.
Ví dụ minh họa
Ví dụ 1: Lọc tài liệu theo điều kiện đơn giản
Giả sử bạn có một collection tên là 'employees' và bạn muốn tìm tất cả nhân viên có tuổi lớn hơn 30.
db.employees.aggregate([ { $match: { age: { $gt: 30 } } } ])
Ví dụ 2: Lọc nhiều điều kiện
Nếu bạn muốn tìm tất cả nhân viên có tuổi lớn hơn 30 và là nhân viên full-time, bạn có thể sử dụng $and kết hợp với $match như sau:
db.employees.aggregate([ { $match: { $and: [ { age: { $gt: 30 } }, { employment_type: 'full-time' } ] } } ])
Ví dụ 3: Sử dụng toán tử logic $or
Nếu bạn muốn tìm các nhân viên có thể là full-time hoặc part-time, bạn có thể sử dụng toán tử $or như sau:
db.employees.aggregate([ { $match: { $or: [ { employment_type: 'full-time' }, { employment_type: 'part-time' } ] } } ])
Kết luận
$match là một trong những công cụ mạnh mẽ trong MongoDB cho phép bạn thực hiện việc lọc tài liệu một cách linh hoạt và hiệu quả. Bằng cách sử dụng $match trong các pipelines của aggregation, bạn có thể thực hiện các truy vấn phức tạp giúp tối ưu hóa việc lấy dữ liệu trong cơ sở dữ liệu của mình.