MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

So zwingen Sie MongoDB pullAll, die Reihenfolge der Dokumente zu ignorieren

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.