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

Xóa phần tử từ mảng lồng kép trong MongoDB

Sử dụng toán tử $pull với đường dẫn dot notation để xóa phần tử từ mảng lồng nhau cấp 2 (doubly-nested array).

Ví dụ minh họa

Tạo collection removeElementFromDoublyNestedArrayDemo:

> db.removeElementFromDoublyNestedArrayDemo.insertOne({
  _id: "1", "TenNguoiDung": "Larry",
  "ChiTietNguoiDung": [{
    "TenQuocGia": "US",
    "ViTri": [{"TenThanhPho": "New York"}, {"MaBuuChinh": "10001"}]
  }]
});
> db.removeElementFromDoublyNestedArrayDemo.insertOne({
  _id: "2", "TenNguoiDung": "Mike",
  "ChiTietNguoiDung": [{
    "TenQuocGia": "UK",
    "ViTri": [{"TenThanhPho": "Bangor"}, {"MaBuuChinh": "20010"}]
  }]
});

Xóa phần tử có MaBuuChinh="20010" trong document _id="2"

> db.removeElementFromDoublyNestedArrayDemo.update(
  {_id: "2"},
  {$pull: {"ChiTietNguoiDung.0.ViTri": {"MaBuuChinh": "20010"}}}
);

Kết quả: Phần tử {"MaBuuChinh": "20010"} bị xóa khỏi mảng ViTri của phần tử đầu tiên (index 0) trong mảng ChiTietNguoiDung.

Giải thích: Đường dẫn ChiTietNguoiDung.0.ViTri trỏ đến mảng ViTri của phần tử đầu tiên trong mảng ChiTietNguoiDung. $pull xóa tất cả phần tử khớp điều kiện trong mảng đó.