Definición
Nota
Desambiguación
La página siguiente hace referencia al operador de actualización $unset. Para la etapa de agregación, consulte $unset.
$unsetEl operador
$unsetelimina un campo específico.
Compatibilidad
Puedes usar $unset para implementaciones alojadas en los siguientes entornos:
- MongoDB Atlas: El servicio totalmente administrado 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
El operador $unset tiene la siguiente forma:
{ $unset: { <field1>: "", ... } }
El valor especificado en la expresión $unset (es decir, "") no afecta 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 hace nada (es decir, no realiza ninguna operación).
Cuando se utiliza con $ para hacer coincidir un elemento de lamatriz, $unset reemplaza el elemento coincidente con null en lugar de eliminarlo de la matriz. Este comportamiento mantiene la coherencia en el tamaño de la matriz y en la posición de los elementos.
A partir de MongoDB, 5.0, mongod ya no genera un error cuando se 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 se crea ninguna entrada en el oplog (lo que significa que la operación no tiene efecto).
Ejemplo
Los ejemplos de esta página utilizan datos del conjunto de datos sample_mflix. Para obtener más información sobre cómo cargar este conjunto de datos en la implementación autogestionada de MongoDB, consultar Cargar el conjunto de datos de muestra. Si realizó alguna modificación en las bases de datos de muestra, es posible que deba descartar y volver a crear las bases de datos para ejecutar los ejemplos de esta página.
El siguiente ejemplo utiliza el operador $unset para eliminar los campos label y status del documento de película correspondiente:
db.movies.updateOne( { title: "The Dark Knight" }, { $unset: { label: "", status: "" } } )
La operación devuelve el siguiente resultado:
{ acknowledged: true, insertedId: null, matchedCount: 1, modifiedCount: 1, upsertedCount: 0 }