$pullAll
операторът наистина е „специален случай“, който е предназначен предимно за единични „скаларни“ елементи на масив, а не за поддокументи по начина, по който го използвате.
Вместо това използвайте $pull
който ще инспектира всеки елемент и ще използва $or
условие за списъците с документи:
db.streams.update(
{ "user": "user_name" },
{ "$pull": { "streams": { "$or": streamsB } }}
)
По този начин няма значение в кой ред са полетата или наистина търсите „точно съвпадение“ като текущия $pullAll
операцията всъщност се изпълнява.