$ pop toán tử sẽ xóa phần tử đầu tiên hoặc cuối cùng của mảng, phần tử này có thể không nhất thiết phải là phần tử phù hợp.
Nếu bạn muốn một phần tử cụ thể, bạn có thể $ pull mặt hàng có tiêu chí xác định:
model.registerCompany.findOneAndUpdate({companyKey:"a key"},
{$pull:{onlineEmployees:"John"}},
Bạn phải đảm bảo giá trị trong mảng là duy nhất, cho $pull
xóa mọi phần tử khớp với tên 'John'.
Nếu các giá trị giống hệt nhau tồn tại trong mảng, bạn cần sử dụng $unset
và $
toán tử vị trí để đặt giá trị phần tử đích thành null
(rất tiếc $ unset sẽ không xóa các phần tử) và sau đó sử dụng $pull
để xóa phần tử có null
giá trị. Để làm điều đó, bạn phải đảm bảo giá trị hợp lệ không được null
. Trong trường hợp đó, mã có thể giống như:
model.registerCompany.findOneAndUpdate({companyKey:"a key", onlineEmployees:"John"},{ $unset: { "onlineEmployees.$" : '' } } )
model.registerCompany.findOneAndUpdate({companyKey:"a key"},{ $pull: { "onlineEmployees" : null } } )