Sử dụng kết hợp $gt: {} và $exists: false trên chỉ số mảng 0. Cú pháp:
db.yourCollectionName.find({
"yourOuterFieldName": { "$gt": {} },
"yourOuterFieldName.0": { "$exists": false }
});
Tạo collection với các trường hợp
> db.checkFieldDemo.insert([
{ _id: 1010, StudentDetails: {} },
{ _id: 1011, StudentDetails: [{ StudentId: 1 }] },
{ _id: 1012, StudentDetails: [{}] },
{ _id: 1013 },
{ _id: 1014, StudentDetails: null },
{ _id: 1015, StudentDetails: { StudentId: 1 } }
]);
BulkWriteResult({ "nInserted": 6, ... })
Hiển thị tất cả
> db.checkFieldDemo.find().pretty();
Truy vấn: StudentDetails là object rỗng {} (không phải mảng, không phải null)
> db.checkFieldDemo.find({
"StudentDetails": { "$gt": {} },
"StudentDetails.0": { "$exists": false }
});
Kết quả (chỉ _id 1015 khớp — object có trường StudentId):
{
"_id": 1015,
"StudentDetails": { "StudentId": 1 }
}
Giải thích:
{ "$gt": {} }— loại bỏ null, mảng rỗng [], object rỗng {} (vì {} không > {})"StudentDetails.0": { "$exists": false }— loại bỏ mảng (vì mảng có index 0)- Kết quả: chỉ giữ lại object không rỗng
Lưu ý: Cách này dựa trên hành vi so sánh BSON. Để kiểm tra chính xác kiểu, dùng $type (ví dụ: { StudentDetails: { $type: "object" } } kết hợp { StudentDetails: { $ne: {} } }).