Definição
$pullAllThe
$pullAlloperator removes all instances of the specified values from an existing array. Unlike the$pulloperator that removes elements by specifying a query,$pullAllremoves elements that match the listed values.The
$pullAlloperator has the form:{ $pullAll: { <field1>: [ <value1>, <value2> ... ], ... } } Para especificar um
<field>em um documento incorporado ou em uma array, use a notação de ponto.
Comportamento
A partir do MongoDB 5.0, os operadores de atualização processam campos de documento com nomes baseados em cadeia de caracteres em ordem lexicográfica. Os campos com nomes numéricos são processados em ordem numérica. Consulte Atualizar Comportamento de Operadores para detalhes.
If a <value> to remove is a document or an array, $pullAll removes only the elements in the array that match the specified <value> exactly, including order.
Starting in MongoDB 5.0, mongod no longer raises an error when you use an update operator like $pullAll with an empty operand expression ( { } ). An empty update results in no changes and no oplog entry is created (meaning that the operation is a no-op).
Exemplos
Crie a coleção survey:
db.survey.insertOne( { _id: 1, scores: [ 0, 2, 5, 5, 1, 0 ] } )
A seguinte operação remove todas as instâncias dos valores "0" e "5" da array scores:
db.survey.updateOne( { _id: 1 }, { $pullAll: { scores: [ 0, 5 ] } } )
Após a atualização, o campo scores não tem mais nenhuma instância de "0" ou "5".
{ "_id" : 1, "scores" : [ 2, 1 ] }