El operador $unset en MongoDB

Shihab Sikder 20 junio 2023
  1. el operador $unset en MongoDB
  2. Use el operador $unset para eliminar un campo de todos los documentos en MongoDB
El operador $unset 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.

Shihab Sikder avatar Shihab Sikder avatar

I'm Shihab Sikder, a professional Backend Developer with experience in problem-solving and content writing. Building secure, scalable, and reliable backend architecture is my motive. I'm working with two companies as a part-time backend engineer.

LinkedIn Website

Artículo relacionado - MongoDB Operator