Sử dụng toán tử $exists: false để tìm document không có trường cụ thể.
Cú pháp
db.tênCollection.find({"tênTrường": {$exists: false}}).pretty();
Ví dụ minh họa
Tạo collection findDocumentDoNotHaveCertainFields với schema không đồng nhất:
> db.findDocumentDoNotHaveCertainFields.insertOne({"MaNguoiDung": 101, "TenNguoiDung": "John", "TuoiNguoiDung": 21});
> db.findDocumentDoNotHaveCertainFields.insertOne({"TenNguoiDung": "David", "TuoiNguoiDung": 22, "MonYeuThich": ["C", "Java"]});
> db.findDocumentDoNotHaveCertainFields.insertOne({"TenNguoiDung": "Bob", "TuoiNguoiDung": 24, "MonYeuThich": ["MongoDB", "MySQL"]});
Document 1 có MaNguoiDung, document 2-3 có MonYeuThich.
Tìm document KHÔNG có trường MonYeuThich
> db.findDocumentDoNotHaveCertainFields.find({"MonYeuThich": {$exists: false}}).pretty();
Kết quả:
{ "_id": ObjectId("..."), "MaNguoiDung": 101, "TenNguoiDung": "John", "TuoiNguoiDung": 21 }
Lưu ý: $exists: false match cả document thiếu trường VÀ document có trường nhưng giá trị null. Dùng {$exists: true, $ne: null} để tìm có trường và không null.