Sử dụng $exists: false
Toán tử $exists kiểm tra sự tồn tại của trường. Kết hợp với $unwind để kiểm tra trong mảng lồng nhau.
Dữ liệu mẫu
> db.demo612.insertOne({
id: 1,
Info: [
{ Name: "Chris", Age: 21 },
{ Name: "David" } // Thiếu trường Age
]
});
Truy vấn
db.demo612.aggregate([
{ $unwind: "$Info" },
{ $match: { "Info.Age": { $exists: false } } },
{ $project: { "Info.Name": 1 } }
]);
Kết quả
{ "_id": ObjectId("5e987372f6b89257f5584d87"), "Info": { "Name": "David" } }
Chỉ trả về phần tử mảng Info thiếu trường Age.