$pullAll
Nesta página
Definição
$pullAll
O operador
$pullAll
remove todas as instâncias dos valores especificados de uma array existente. Ao contrário do operador$pull
que remove elementos especificando uma query,$pullAll
remove elementos que correspondem aos valores listados.O operador
$pullAll
tem o formato:{ $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.
Se um <value>
a ser removido for um documento ou uma array, $pullAll
removerá somente os elementos na array que correspondam exatamente ao <value>
especificado, incluindo a ordem.
A partir do MongoDB 5.0, mongod
não gera mais um erro ao usar um operador de atualização como $pullAll
com uma expressão de operando vazia ( { }
). Uma atualização vazia não resulta em alteração e nenhuma entrada no oplog é criada (o que significa que é sem operação).
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 ] }