Der $pullAll
Der Operator ist wirklich ein "Sonderfall", der hauptsächlich für einzelne "skalare" Array-Elemente gedacht war und nicht für Unterdokumente, wie Sie ihn verwenden.
Verwenden Sie stattdessen $pull
die jedes Element untersucht und einen $or
Bedingung für die Dokumentenlisten:
db.streams.update(
{ "user": "user_name" },
{ "$pull": { "streams": { "$or": streamsB } }}
)
Auf diese Weise spielt es keine Rolle, in welcher Reihenfolge sich die Felder befinden, oder suchen Sie tatsächlich nach einer "genauen Übereinstimmung" als dem aktuellen $pullAll
Betrieb tatsächlich tut.