Xóa trường dữ liệu với toán tử $unset
Để xóa một trường cụ thể khỏi document trong MongoDB, bạn sử dụng toán tử $unset. Toán tử này loại bỏ hoàn toàn trường khỏi document thay vì chỉ đặt giá trị null.
Ví dụ minh họa
Trước tiên, tạo một collection với document chứa mảng lồng nhau:
> db.demo20.insertOne({
"ListOfEmployee": [
{ "EmployeeName1": "John" },
{ "EmployeeName2": "Carol" }
],
"EmployeeName2": []
});
Kiểm tra document vừa tạo:
> db.demo20.find();
{
"_id": ObjectId("..."),
"ListOfEmployee": [
{ "EmployeeName1": "John" },
{ "EmployeeName2": "Carol" }
],
"EmployeeName2": []
}
Thực hiện xóa trường EmployeeName2
> db.demo20.update(
{ "EmployeeName2": { "$exists": true } },
{ "$unset": { "EmployeeName2": "" } }
);
Kết quả: WriteResult({ "nMatched": 1, "nUpserted": 0, "nModified": 1 })
Kiểm tra sau khi xóa
> db.demo20.find();
{
"_id": ObjectId("..."),
"ListOfEmployee": [
{ "EmployeeName1": "John" },
{ "EmployeeName2": "Carol" }
]
}
Lưu ý: Trường EmployeeName2 ở cấp gốc đã bị xóa hoàn toàn, nhưng trường EmployeeName2 bên trong mảng ListOfEmployee vẫn được giữ nguyên vì chúng là trường khác nhau.