El operador $unset en MongoDB
-
el operador
$unset
en MongoDB -
Use el operador
$unset
para eliminar un campo de todos los documentos en MongoDB
Este artículo discutirá cómo funciona el operador $unset
en MongoDB. Además, demostraremos cómo eliminar un campo de todos los documentos de la colección MongoDB utilizando este operador.
el operador $unset
en MongoDB
$unset
es un operador que se utiliza para eliminar un campo de una entidad. Se usa en el método update
en MongoDB y no afecta nada si no se encuentra ninguna coincidencia en dicho método.
Suponga que tiene los siguientes documentos en la base de datos de MongoDB:
> db.employee.find().pretty()
{"_id":1, "name":"Alice", "salary": 1500}
{"_id":2, "name":"Bob", "salary": 2500}
{"_id":3, "name":"Jhon", "salary": 3500, "role":"Owner"}
{"_id":4, "name":"Grace", "salary": 4500}
Tienes 4 entidades en el documento, y el método find()
se usa sin parámetros. Devolverá todas las entidades de la colección empleado
, y bonita()
se utiliza para imprimir la entidad de forma formateada.
Ahora, digamos que no quiere mostrar el campo rol
por alguna razón. Por lo tanto, debe eliminarlo de la fila.
La consulta debe ser la siguiente:
> db.employee.update({_id:3}, {$unset : {"role":""}} )
> db.employee.find().pretty()
{"_id":1, "name":"Alice", "salary": 1500}
{"_id":2, "name":"Bob", "salary": 2500}
{"_id":3, "name":"Jhon", "salary": 3500}
{"_id":4, "name":"Grace", "salary": 4500}
Ahora, eliminará el campo rol
del primer documento coincidente, donde id = 3
.
Otra opción llamada múltiple
, una forma abreviada de múltiple
, tiene un valor de false
por defecto.
Si su valor es true
, afectará a la consulta de actualización
a todos los documentos coincidentes.
Use el operador $unset
para eliminar un campo de todos los documentos en MongoDB
Digamos que se le ha pedido que elimine el campo salario
de todos los documentos en la colección MongoDB. Si usamos el comando actualizar
una vez para cada id, tardará más.
Más bien, deberíamos hacer lo siguiente:
> db.employee.update({}, {$unset:{"salary": ""}}, {multi: true})
> db.employee.find().pretty()
{"_id":1, "name":"Alice" }
{"_id":2, "name":"Bob" }
{"_id":3, "name":"Jhon" }
{"_id":4, "name":"Grace" }
Usamos un objeto vacío en la consulta update
y pusimos true
en multi
. Básicamente, {}
seleccionará todos los documentos en el objeto, y {multi: true}
afecta a todos los documentos coincidentes del método actualizar
.
Estos son los formatos básicos (de la documentación oficial):
db.collection.updateOne(<filter>, <update>, <options>)
db.collection.updateMany(<filter>, <update>, <options>)
db.collection.replaceOne(<filter>, <update>, <options>)
En el método actualizar
, puede utilizar los operadores $unset
, y en las opciones
, puede utilizar multi
.
Lea más sobre el operador $unset
en la documentación oficial.