Dùng $exists để kiểm tra trường có mặt
Toán tử $exists: true tìm document có trường cụ thể, $exists: false tìm document thiếu trường đó.
Dữ liệu có trường Name tùy chọn
> db.demo322.insertOne({
'id': 1001,
'details': [
{'Score': 10000, Name: "Bob"},
{'Score': 98000, Name: "Sam"}
]
});
> db.demo322.insertOne({
'id': 10002,
'details': [
{'Score': 9000},
{'Score': 91000}
]
});
Kiểm tra có document nào có details.Name không
> db.demo322.find({ "details.Name": { $exists: true } }).count() > 0;
Kết quả
True
Ứng dụng:
- Tìm document thiếu trường:
{ "email": { $exists: false } } - Kết hợp với $elemMatch cho mảng:
{ "details": { $elemMatch: { "Name": { $exists: true } } } } - Schema validation: Bắt buộc trường với
$exists: truetrong validator