Bạn có thể sử dụng toán tử $pull để thực hiện việc này. Trước tiên, hãy tạo một collection với các document. Ở đây chúng ta cũng thêm một đối tượng rỗng:
> db.removeEmptyObjectsDemo.insertOne(
{
"_id": 101,
"LoginDate": new ISODate(),
"UserDetails": [
{ "UserName": "John" },
{},
{ "UserName": "Sam" }
]
}
);
{ "acknowledged": true, "insertedId": 101 }
Truy vấn sau hiển thị tất cả document trong collection bằng phương thức find():
> db.removeEmptyObjectsDemo.find().pretty();
Kết quả trả về:
{
"_id": 101,
"LoginDate": ISODate("2019-05-25T04:46:29.505Z"),
"UserDetails": [
{ "UserName": "John" },
{},
{ "UserName": "Sam" }
]
}
Truy vấn sau sẽ xóa các đối tượng rỗng trong mảng đối tượng:
> db.removeEmptyObjectsDemo.update(
{},
{ "$pull": { "UserDetails": { "UserName": { "$exists": false } } } },
{ "multi": true }
);
WriteResult({ "nMatched": 1, "nUpserted": 0, "nModified": 1 })
Kiểm tra lại các document trong collection:
> db.removeEmptyObjectsDemo.find().pretty();
Kết quả sau khi xóa thành công đối tượng rỗng:
{
"_id": 101,
"LoginDate": ISODate("2019-05-25T04:46:29.505Z"),
"UserDetails": [
{ "UserName": "John" },
{ "UserName": "Sam" }
]
}