MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment forcer MongoDB pullAll à ignorer l'ordre des documents

Le $pullAll L'opérateur est vraiment un "cas spécial" qui était principalement destiné aux éléments de tableau "scalaires" simples et non aux sous-documents de la manière dont vous l'utilisez.

Utilisez plutôt $pull qui inspectera chaque élément et utilisera un $or condition pour les listes de documents :

db.streams.update(
    { "user": "user_name" },
    { "$pull": { "streams": { "$or": streamsB } }}
)

De cette façon, peu importe l'ordre dans lequel se trouvent les champs ou la recherche d'une "correspondance exacte" comme le $pullAll actuel l'opération est en cours.