Eliminar Datos de MongoDB

MongoDBBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderá a eliminar datos de manera efectiva en una base de datos MongoDB. Comenzará eliminando un solo documento, luego explorará técnicas para realizar eliminaciones masivas y eliminar datos según condiciones específicas. Finalmente, aprenderá a vaciar una colección completa y verificar los resultados de la eliminación. Estas habilidades son esenciales para administrar su base de datos MongoDB y mantener la integridad de los datos.

El laboratorio cubre los siguientes temas: eliminar un solo documento con deleteOne(), eliminar múltiples documentos con deleteMany(), usar operadores de consulta para la eliminación condicional y vaciar una colección con deleteMany({}) o drop(). Al final de este laboratorio, tendrá una sólida comprensión de cómo eliminar datos en MongoDB utilizando varios métodos.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 97%. Ha recibido una tasa de reseñas positivas del 98% por parte de los estudiantes.

Eliminar un Documento Individual

En este paso, aprenderá a eliminar un solo documento de una colección de MongoDB. Primero, deberá conectarse a la shell de MongoDB y preparar algunos datos de ejemplo.

Inicie la shell de MongoDB ejecutando el siguiente comando en su terminal:

mongosh

Una vez dentro de la shell, creará una nueva base de datos y una colección con algunos documentos.

use mylab_database

Cree una nueva colección con algunos documentos.

db.users.insertMany([
  { name: "John Doe", age: 30, email: "john@example.com" },
  { name: "Jane Smith", age: 25, email: "jane@example.com" },
  { name: "Bob Johnson", age: 35, email: "bob@example.com" }
]);

La salida confirma que se han insertado tres documentos.

{
  "acknowledged": true,
  "insertedIds": {
    "0": ObjectId("..."),
    "1": ObjectId("..."),
    "2": ObjectId("...")
  }
}

Ahora, para eliminar un solo documento, utilice el método deleteOne(). Este método encuentra el primer documento que coincide con el filtro especificado y lo elimina. Eliminemos el documento de "Jane Smith".

db.users.deleteOne({ name: "Jane Smith" });

La salida indica que se eliminó un documento con éxito.

{ "acknowledged": true, "deletedCount": 1 }
  • deleteOne(): Este método elimina solo el primer documento que coincide con los criterios del filtro.
  • { name: "Jane Smith" }: Este es el filtro que especifica qué documento eliminar.
  • deletedCount: 1: Esto confirma que se eliminó un documento.

Para verificar que el documento ha sido eliminado, puede listar todos los documentos restantes en la colección users.

db.users.find();

La salida ahora mostrará solo dos documentos, confirmando que "Jane Smith" ha sido eliminada.

Eliminar Múltiples Documentos

En el paso anterior, eliminó un solo documento. Ahora, aprenderá a eliminar varios documentos a la vez utilizando el método deleteMany(). Esto es útil para operaciones de eliminación masiva, como la limpieza de registros con un estado específico.

Primero, agreguemos algunos documentos nuevos a nuestra colección users. Estos documentos tendrán un campo status, que utilizaremos para nuestra operación de eliminación masiva.

db.users.insertMany([
  { name: "Alice Wilson", age: 28, status: "inactive" },
  { name: "Charlie Brown", age: 40, status: "inactive" },
  { name: "David Lee", age: 35, status: "active" },
  { name: "Eve Taylor", age: 45, status: "inactive" }
]);

La salida confirmará la inserción de cuatro nuevos documentos.

{
  "acknowledged": true,
  "insertedIds": {
    "0": ObjectId("..."),
    "1": ObjectId("..."),
    "2": ObjectId("..."),
    "3": ObjectId("...")
  }
}

Ahora, utilice el método deleteMany() para eliminar todos los usuarios cuyo estado sea "inactive".

db.users.deleteMany({ status: "inactive" });

La salida muestra que se eliminaron tres documentos.

{ "acknowledged": true, "deletedCount": 3 }
  • deleteMany(): Este método elimina todos los documentos que coinciden con los criterios del filtro.
  • { status: "inactive" }: Este filtro se dirige a todos los documentos donde el campo status es "inactive".

Para confirmar la eliminación masiva, liste todos los documentos restantes en la colección.

db.users.find();

La salida mostrará solo los documentos que no estaban "inactive", lo que demuestra que la eliminación masiva fue exitosa.

Eliminar Documentos Mediante Condiciones

MongoDB le permite utilizar potentes operadores de consulta para eliminar documentos basándose en condiciones más complejas. En este paso, aprenderá a utilizar operadores como $gt (mayor que) y $lt (menor que) para realizar eliminaciones condicionales.

Primero, creemos una nueva colección llamada employees con algunos datos de ejemplo.

db.employees.insertMany([
  { name: "John Doe", age: 25, department: "Sales", salary: 50000 },
  { name: "Jane Smith", age: 35, department: "Marketing", salary: 60000 },
  { name: "Bob Johnson", age: 45, department: "Sales", salary: 55000 },
  { name: "Alice Brown", age: 30, department: "HR", salary: 52000 }
]);

La salida confirmará la inserción de cuatro documentos.

{
  "acknowledged": true,
  "insertedIds": {
    "0": ObjectId("..."),
    "1": ObjectId("..."),
    "2": ObjectId("..."),
    "3": ObjectId("...")
  }
}

Ahora, realicemos una eliminación condicional. Eliminaremos a todos los empleados mayores de 40 años.

db.employees.deleteMany({ age: { $gt: 40 } });

La salida indica que se eliminó un documento.

{ "acknowledged": true, "deletedCount": 1 }
  • { age: { $gt: 40 } }: Este filtro utiliza el operador $gt para seleccionar documentos donde el campo age sea mayor que 40.

A continuación, realicemos una eliminación basada en múltiples condiciones. Eliminaremos a los empleados del departamento "Sales" cuyo salario sea inferior a 55.000.

db.employees.deleteMany({
  department: "Sales",
  salary: { $lt: 55000 }
});

La salida confirma que se eliminó otro documento.

{ "acknowledged": true, "deletedCount": 1 }
  • Este comando combina dos condiciones: el department debe ser "Sales" y el salary debe ser inferior a 55.000 (utilizando el operador $lt).

Para verificar los resultados, vea los documentos restantes en la colección employees.

db.employees.find();

La salida mostrará solo a los dos empleados que no cumplieron los criterios de eliminación.

Vaciar Todos los Datos de una Colección

A veces puede que necesite eliminar todos los documentos de una colección. MongoDB proporciona dos formas principales para lograr esto: usar deleteMany({}) para eliminar todos los documentos, o usar drop() para eliminar la colección completa.

Primero, creemos una nueva colección products con algunos datos de ejemplo.

db.products.insertMany([
  { name: "Laptop", price: 1000, category: "Electronics" },
  { name: "Smartphone", price: 500, category: "Electronics" },
  { name: "Headphones", price: 100, category: "Electronics" }
]);

Método 1: Eliminar Todos los Documentos con deleteMany()

Puede eliminar todos los documentos de una colección pasando un filtro vacío {} al método deleteMany(). Este enfoque elimina los datos pero conserva la colección en sí, incluidos sus índices.

db.products.deleteMany({});

La salida muestra que los tres documentos fueron eliminados.

{ "acknowledged": true, "deletedCount": 3 }

Puede verificar que la colección está ahora vacía ejecutando una consulta find().

db.products.find();

Este comando no devolverá ningún documento.

Método 2: Eliminar la Colección Completa con drop()

El método drop() es más destructivo. Elimina completamente la colección, incluidos todos sus documentos, índices y metadatos asociados.

Primero, volvamos a insertar los datos de ejemplo para tener una colección que eliminar.

db.products.insertMany([
  { name: "Laptop", price: 1000, category: "Electronics" },
  { name: "Smartphone", price: 500, category: "Electronics" },
  { name: "Headphones", price: 100, category: "Electronics" }
]);

Ahora, elimine completamente la colección products.

db.products.drop();

La salida true confirma que la colección se eliminó correctamente.

true

Si ahora intenta consultar la colección products, no obtendrá ningún resultado porque la colección ya no existe.

db.products.find();

Este comando no producirá ninguna salida, ya que la colección ha desaparecido. Para salir del shell mongosh, puede escribir exit o presionar Ctrl+D.

Resumen

En este laboratorio, ha aprendido las técnicas fundamentales para eliminar datos en MongoDB. Comenzó utilizando el método deleteOne() para eliminar un único documento basándose en un filtro específico. Luego, pasó a las eliminaciones masivas con deleteMany(), que elimina eficientemente múltiples documentos que coinciden con un criterio. También exploró cómo utilizar operadores de consulta como $gt y $lt para realizar eliminaciones condicionales más complejas. Finalmente, aprendió dos métodos para vaciar una colección: usar deleteMany({}) para eliminar todos los documentos manteniendo la estructura de la colección, y usar drop() para eliminar permanentemente la colección completa.

Estas habilidades son cruciales para la administración de bases de datos, permitiéndole gestionar el ciclo de vida de los datos, limpiar registros innecesarios y mantener la salud general de su base de datos MongoDB.