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

Xóa phần tử khỏi mảng con (sub-property) trong MongoDB

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ối
  • arrayFilters với $[elem]: xóa phần tử thỏa mãn điều kiện phức tạp (MongoDB 3.6+)