Để tìm document có chứa một trường (property) cụ thể (bất kể giá trị), bạn sử dụng toán tử $exists. Để tìm document mà trường đó không null, kết hợp $ne: null.
Tạo dữ liệu mẫu
Có document với FirstName: null và document không có trường FirstName (không có trong ví dụ này, nhưng $exists:false sẽ khớp).
Hiển thị tất cả:
{ "_id" : ObjectId("5cbaf7af7219729fde21ddb5"), "FirstName" : "Larry", "Age" : 23 } { "_id" : ObjectId("5cbaf7b97219729fde21ddb6"), "FirstName" : null, "Age" : 21 } { "_id" : ObjectId("5cbaf7c57219729fde21ddb7"), "FirstName" : "John", "Age" : 22 } { "_id" : ObjectId("5cbaf7d07219729fde21ddb8"), "FirstName" : null, "Age" : 25 } { "_id" : ObjectId("5cbaf7df7219729fde21ddb9"), "FirstName" : "David", "Age" : 20 }Tìm document có FirstName KHÁC null
{ "_id" : ObjectId("5cbaf7af7219729fde21ddb5"), "FirstName" : "Larry", "Age" : 23 } { "_id" : ObjectId("5cbaf7c57219729fde21ddb7"), "FirstName" : "John", "Age" : 22 } { "_id" : ObjectId("5cbaf7df7219729fde21ddb9"), "FirstName" : "David", "Age" : 20 }So sánh $exists vs $ne: null
| Truy vấn | Khớp document có trường | Khớp document trường = null | Khớp document thiếu trường |
|---|---|---|---|
| {field: {$exists: true}} | ✓ | ✓ | ✗ |
| {field: {$ne: null}} | ✓ | ✗ | ✓ |
| {field: {$exists: true, $ne: null}} | ✓ | ✗ | ✗ |
Trong ví dụ trên, dùng $ne: null vừa loại bỏ null, vừa giữ document có trường (tất cả document đều có trường FirstName). Nếu có document thiếu hẳn trường, $ne: null sẽ khớp document đó (vì missing != null).