$pullAll
toán tử thực sự là một "trường hợp đặc biệt" chủ yếu dành cho các phần tử mảng "vô hướng" duy nhất chứ không phải cho các tài liệu con theo cách bạn đang sử dụng.
Thay vào đó, hãy sử dụng $pull
sẽ kiểm tra từng phần tử và sử dụng $or
điều kiện cho danh sách tài liệu:
db.streams.update(
{ "user": "user_name" },
{ "$pull": { "streams": { "$or": streamsB } }}
)
Bằng cách đó, không quan trọng thứ tự các trường nằm trong hoặc thực sự tìm kiếm "đối sánh chính xác" như $pullAll
hiện tại hoạt động thực sự đang hoạt động.