Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Xóa phần tử khỏi mảng trong MongoDB với $pull

Toán tử $pull xóa tất cả phần tử khớp điều kiện khỏi mảng. Khác với $pop (xóa đầu/cuối) hoặc $pullAll (xóa theo danh sách giá trị chính xác).

Dữ liệu mẫu

> db.demo224.insertOne({"ListOfTechnology":["Spring","Hibernate","Java"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3ee6d103d395bdc2134733") }
> db.demo224.insertOne({"ListOfTechnology":["Groovy"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3ee6ec03d395bdc2134734") }

Xóa "Java" khỏi mảng

> db.demo224.update(
    {_id:ObjectId("5e3ee6d103d395bdc2134733")}, 
    {$pull:{"ListOfTechnology":"Java"}}
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Kết quả

{ "_id" : ObjectId("5e3ee6d103d395bdc2134733"), "ListOfTechnology" : [ "Spring", "Hibernate" ] }
{ "_id" : ObjectId("5e3ee6ec03d395bdc2134734"), "ListOfTechnology" : [ "Groovy" ] }

Các toán tử xóa mảng:

Lưu ý: $pull với object: {$pull: {arr: {field: value}}} xóa phần tử object khớp. Dùng $elemMatch trong $pull cho điều kiện phức tạp trên object.

Toán tửHành động
$pullXóa TẤT CẢ phần tử khớp điều kiện (query/value)
$pullAllXóa phần tử có giá trị trong mảng cho trước (exact match)
$popXóa 1 phần tử: 1=cuối, -1=đầu
$unset + $pullSet null rồi pull null (cũ)