Definición
Nota
Desambiguación
$unsetEl
$unsetoperador borra un campo específico.
Compatibilidad
Puedes usar $unset para implementaciones alojadas en los siguientes entornos:
MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube
MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB
MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.
Sintaxis
Considere la siguiente sintaxis:
{ $unset: { <field1>: "", ... } }
El valor especificado en la expresión $unset (es decir, "") no tiene impacto en la operación.
Para especificar un <field> en un documento incrustado o en un arreglo, utiliza notación de puntos.
Comportamiento
A partir de MongoDB 5.0, los operadores de actualización procesan los campos de documentos con nombres basados en cadenas en orden lexicográfico. Los campos con nombres numéricos se procesan en orden numérico. Consulta Comportamiento del operador de actualización para obtener más información.
Si el campo no existe, entonces $unset no realiza ninguna acción (es decir, sin operación).
Cuando se utiliza con $ para hacer coincidir un elemento del arreglo, $unset reemplaza el elemento que coincide con null en lugar de remover el elemento que coincide del arreglo. Este comportamiento hace que el tamaño del arreglo y las posiciones de los elementos mantengan una coherencia.
A partir de MongoDB 5.0, mongod ya no genera un error cuando utiliza un operador de actualización como $unset con una expresión de operando vacía ( { } ). Una actualización vacía no produce cambios y no genera ninguna entrada en el oplog (lo que significa que la operación es una “no-op").
Ejemplo
Crear la colección 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 } ] )
Actualice el primer documento en la colección products donde el valor de sku es unknown:
db.products.updateOne( { sku: "unknown" }, { $unset: { quantity: "", instock: "" } } )
updateOne() utiliza el operador $unset para:
Remover el campo
quantityRemover el campo
instock
{ item: 'chisel', sku: 'C001', quantity: 4, instock: true }, { item: 'hammer', sku: 'unknown' }, { item: 'nails', sku: 'unknown', quantity: 100, instock: true }