$pullAll
Operator jest tak naprawdę „przypadkiem specjalnym”, który był przeznaczony głównie dla pojedynczych „skalarnych” elementów tablicy, a nie dla dokumentów podrzędnych w sposób, w jaki go używasz.
Zamiast tego użyj $pull
który sprawdzi każdy element i użyje $or
warunek dla list dokumentów:
db.streams.update(
{ "user": "user_name" },
{ "$pull": { "streams": { "$or": streamsB } }}
)
W ten sposób nie ma znaczenia, w jakiej kolejności znajdują się pola, ani rzeczywiście szukać "dokładnego dopasowania" jako bieżącego $pullAll
operacja faktycznie działa.