$pullAll
operatorn är egentligen ett "speciellt fall" som mest var avsett för enstaka "skalära" arrayelement och inte för underdokument på det sätt du använder det.
Använd istället $pull
som kommer att inspektera varje element och använda en $or
villkor för dokumentlistorna:
db.streams.update(
{ "user": "user_name" },
{ "$pull": { "streams": { "$or": streamsB } }}
)
På så sätt spelar det ingen roll vilken ordning fälten är i eller faktiskt leta efter en "exakt matchning" som den nuvarande $pullAll
operationen faktiskt gör.