El $pullAll
operador es realmente un "caso especial" que estaba destinado principalmente a elementos de matriz "escalares" individuales y no a subdocumentos en la forma en que lo está utilizando.
En su lugar, utilice $pull
que inspeccionará cada elemento y utilizará un $or
condición para las listas de documentos:
db.streams.update(
{ "user": "user_name" },
{ "$pull": { "streams": { "$or": streamsB } }}
)
De esa manera, no importa en qué orden estén los campos o busque una "coincidencia exacta" como el $pullAll
actual la operación está realmente haciendo.