Sử dụng toán tử $pull để xóa phần tử khỏi mảng dựa trên điều kiện khớp.
Tạo collection với mảng lồng trong object:
> db.demo388.insertOne({
_id: '101',
userDetails: {
isMarried: false,
userInfo: [
{ Name:"Chris", Age:21 }
]
}
});
{ "acknowledged" : true, "insertedId" : "101" }
Xem dữ liệu:
> db.demo388.find();
Xóa phần tử trong userInfo có Name="Chris":
> db.demo388.update( { "_id": "101" }, { "$pull": { "userDetails.userInfo": { "Name":"Chris" } } } ) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })Kết quả (mảng userInfo rỗng):
> db.demo388.find();Giải thích:
$pull: xóa **tất cả** phần tử khớp điều kiện trong mảng- Đường dẫn
userDetails.userInfo: truy cập mảng lồng trong object - Điều kiện
{ "Name":"Chris" }: khớp chính xác object con
Biến thể:
$pullAll: xóa các giá trị chính xác trong mảng giá trị đơn giản$pop: xóa phần tử đầu/cuốiarrayFiltersvới$[elem]: xóa phần tử thỏa mãn điều kiện phức tạp (MongoDB 3.6+)