Il $pullAll
operatore è in realtà un "caso speciale" destinato principalmente a singoli elementi di array "scalari" e non a documenti secondari nel modo in cui lo stai utilizzando.
Usa invece $pull
che ispezionerà ogni elemento e utilizzerà un $or
condizione per gli elenchi di documenti:
db.streams.update(
{ "user": "user_name" },
{ "$pull": { "streams": { "$or": streamsB } }}
)
In questo modo non importa in quale ordine si trovino i campi o effettivamente cercare una "corrispondenza esatta" come l'attuale $pullAll
l'operazione sta effettivamente facendo.