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

Cách xóa phần tử mảng theo chỉ mục trong MongoDB

Để xóa phần tử mảng theo chỉ mục trong MongoDB, bạn có thể sử dụng kết hợp hai toán tử $unset và $pull. Quy trình bao gồm hai bước: đầu tiên đặt giá trị tại chỉ mục mục tiêu thành null, sau đó loại bỏ các giá trị null khỏi mảng.

Cú pháp

db.tênCollection.update({}, {$unset: {"tênMảng.vịTrí": giáTrịVịTrí}});
db.tênCollection.update({}, {$pull: {"tênMảng": null}});

Ví dụ minh họa

Tạo collection và document mẫu:

> db.xoaPhanTuMang.insertOne({"TenSinhVien": "Larry", "TuoiSinhVien": 23, "MonHocKyThuat": ["C", "C++", "Java", "MongoDB"]});
{ "acknowledged": true, "insertedId": ObjectId("5c6ea4879c4643706aef56d2") }

Hiển thị document ban đầu:

> db.xoaPhanTuMang.find().pretty();
{
  "_id": ObjectId("5c6ea4879c4643706aef56d2"),
  "TenSinhVien": "Larry",
  "TuoiSinhVien": 23,
  "MonHocKyThuat": ["C", "C++", "Java", "MongoDB"]
}

Xóa phần tử tại chỉ mục 3 (phần tử "MongoDB"):

> db.xoaPhanTuMang.update({}, {$unset: {"MonHocKyThuat.3": 1}});
WriteResult({ "nMatched": 1, "nUpserted": 0, "nModified": 1 })
> db.xoaPhanTuMang.update({}, {$pull: {"MonHocKyThuat": null}});
WriteResult({ "nMatched": 1, "nUpserted": 0, "nModified": 1 })

Kiểm tra kết quả:

> db.xoaPhanTuMang.find().pretty();
{
  "_id": ObjectId("5c6ea4879c4643706aef56d2"),
  "TenSinhVien": "Larry",
  "TuoiSinhVien": 23,
  "MonHocKyThuat": ["C", "C++", "Java"]
}

Kết quả cho thấy phần tử tại chỉ mục 3 ("MongoDB") đã bị xóa khỏi mảng.