Toán tử $exists kiểm tra sự tồn tại của trường (field) trong document, bất kể giá trị.
Dữ liệu mẫu (document 2 thiếu Age)
> db.demo234.insertOne({"FirstName":"Chris","LastName":"Brown","Age":24});
> db.demo234.insertOne({"FirstName":"David","LastName":"Miller"});
> db.demo234.insertOne({"FirstName":"John","LastName":"Smith","Age":34});
Truy vấn document KHÔNG có trường Age
> var iterator = db.demo234.find({"Age":{$exists:false}},{"_id":0});
> iterator.forEach(function(d) { printjson(d); })
Kết quả
{ "FirstName" : "David", "LastName" : "Miller" }
Các trường hợp $exists:
{field: {$exists: true}}: Trường tồn tại (kể cả giá trị null){field: {$exists: false}}: Trường không tồn tại- Kết hợp:
{field: {$exists: true, $ne: null}}→ tồn tại VÀ khác null
Lưu ý: {field: null} khớp CẢ trường không tồn tại VÀ trường tồn tại giá trị null. Dùng $exists để phân biệt.
Cập nhật thêm trường cho document thiếu:
db.demo234.updateMany({Age: {$exists: false}}, {$set: {Age: 0}});