$pullAll
operator sebenarnya adalah "kasus khusus" yang sebagian besar ditujukan untuk elemen larik "skalar" tunggal dan bukan untuk sub-dokumen seperti yang Anda gunakan.
Alih-alih gunakan $pull
yang akan memeriksa setiap elemen dan menggunakan $or
syarat untuk daftar dokumen:
db.streams.update(
{ "user": "user_name" },
{ "$pull": { "streams": { "$or": streamsB } }}
)
Dengan begitu, tidak masalah urutan bidang mana atau memang mencari "kecocokan persis" sebagai $pullAll
saat ini operasi yang sebenarnya dilakukan.