Sử dụng $ne: null trong Aggregation
Để loại trừ các bản ghi có trường bằng null, dùng toán tử $ne (not equal) trong giai đoạn $match sau khi $unwind.
Dữ liệu mẫu
> db.demo722.insertOne({
id: 101,
details: [
{ Name: "" },
{ Name: "David" },
{ Name: null },
{ Name: "Carol" }
]
});
Truy vấn
db.demo722.aggregate([
{ $unwind: "$details" },
{ $match: { "details.Name": { $ne: null } } }
]);
Kết quả
{ "_id": ObjectId("5eab07d543417811278f5889"), "id": 101, "details": { "Name": "" } }
{ "_id": ObjectId("5eab07d543417811278f5889"), "id": 101, "details": { "Name": "David" } }
{ "_id": ObjectId("5eab07d543417811278f5889"), "id": 101, "details": { "Name": "Carol" } }
Lưu ý: Giá trị rỗng ("") không bị loại vì khác null. Để loại cả rỗng, thêm điều kiện $ne: "".