$unset
Definição
Observação
Desambiguação
$unset
O operador
$unset
exclui um campo específico.
Compatibilidade
Você pode utilizar o $unset
para implantações hospedadas nos seguintes ambientes:
MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem
MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB
MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB
Sintaxe
Considere a seguinte sintaxe:
{ $unset: { <field1>: "", ... } }
O valor especificado na expressão $unset
(ou seja, ""
) não afeta a operação.
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 o campo não existir, então $unset
não faz nada (ou seja, nenhuma operação).
Quando usado com $
para corresponder a um elemento de array, $unset
substitui o elemento correspondente por null
em vez de remover o elemento correspondente da array. Esse comportamento mantém consistentes o tamanho da array e as posições dos elementos.
A partir do MongoDB 5.0, mongod
não gera mais um erro ao usar um operador de atualização como $unset
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).
Exemplo
Crie a coleção products
:
db.products.insertMany( [ { "item": "chisel", "sku": "C001", "quantity": 4, "instock": true }, { "item": "hammer", "sku": "unknown", "quantity": 3, "instock": true }, { "item": "nails", "sku": "unknown", "quantity": 100, "instock": true } ] )
Atualize o primeiro documento na collection products
onde o valor de sku
é unknown
:
db.products.updateOne( { sku: "unknown" }, { $unset: { quantity: "", instock: "" } } )
updateOne()
utiliza o operador $unset
para:
remover o campo
quantity
remover o campo
instock
{ item: 'chisel', sku: 'C001', quantity: 4, instock: true }, { item: 'hammer', sku: 'unknown' }, { item: 'nails', sku: 'unknown', quantity: 100, instock: true }