Eliminar datos de MongoDB

MongoDBMongoDBBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderá a eliminar eficazmente datos en una base de datos MongoDB. Comenzará eliminando un solo documento, luego explorará técnicas para realizar eliminaciones masivas y eliminar datos basados en condiciones específicas. Finalmente, aprenderá a vaciar una colección completa y a 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 pasos: Eliminar un solo documento, Realizar eliminaciones masivas, Eliminar por condiciones, Vaciar datos de la colección y Verificar los resultados de la eliminación. Al final de este laboratorio, tendrá una comprensión sólida de cómo eliminar datos en MongoDB utilizando varios métodos para satisfacer sus necesidades.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL mongodb(("MongoDB")) -.-> mongodb/BasicOperationsGroup(["Basic Operations"]) mongodb(("MongoDB")) -.-> mongodb/QueryOperationsGroup(["Query Operations"]) mongodb(("MongoDB")) -.-> mongodb/AggregationOperationsGroup(["Aggregation Operations"]) mongodb/BasicOperationsGroup -.-> mongodb/start_mongodb_shell("Start MongoDB Shell") mongodb/BasicOperationsGroup -.-> mongodb/delete_document("Delete Document") mongodb/BasicOperationsGroup -.-> mongodb/bulk_delete_documents("Bulk Delete Documents") mongodb/QueryOperationsGroup -.-> mongodb/find_documents("Find Documents") mongodb/QueryOperationsGroup -.-> mongodb/query_with_conditions("Query with Conditions") mongodb/AggregationOperationsGroup -.-> mongodb/aggregate_group_totals("Aggregate Group Totals") subgraph Lab Skills mongodb/start_mongodb_shell -.-> lab-420822{{"Eliminar datos de MongoDB"}} mongodb/delete_document -.-> lab-420822{{"Eliminar datos de MongoDB"}} mongodb/bulk_delete_documents -.-> lab-420822{{"Eliminar datos de MongoDB"}} mongodb/find_documents -.-> lab-420822{{"Eliminar datos de MongoDB"}} mongodb/query_with_conditions -.-> lab-420822{{"Eliminar datos de MongoDB"}} mongodb/aggregate_group_totals -.-> lab-420822{{"Eliminar datos de MongoDB"}} end

Eliminar un solo documento

En este paso, aprenderemos a eliminar un solo documento en MongoDB utilizando el método deleteOne(). Primero, lance la shell de MongoDB:

mongosh

Vamos a crear una colección de ejemplo con algunos documentos para practicar la eliminación:

use mylab_database
db.users.insertMany([
    { name: "John Doe", age: 30, email: "[email protected]" },
    { name: "Jane Smith", age: 25, email: "[email protected]" },
    { name: "Bob Johnson", age: 35, email: "[email protected]" }
])

Salida de ejemplo:

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

Para eliminar un solo documento, usaremos el método deleteOne(). Este método te permite eliminar un documento específico basado en un identificador único o una condición específica:

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

Salida esperada:

{ acknowledged: true, deletedCount: 1 }

Analicemos el comando:

  • deleteOne() solo elimina el primer documento que coincide con los criterios especificados
  • Si coinciden múltiples documentos, solo se elimina el primero
  • El método devuelve un objeto con acknowledged (éxito de la operación) y deletedCount (número de documentos eliminados)

Verifique la eliminación buscando a todos los usuarios:

db.users.find()

La salida esperada mostrará solo dos documentos para John Doe y Bob Johnson.

Realizar eliminaciones masivas

En este paso, exploraremos cómo eliminar múltiples documentos a la vez utilizando el método deleteMany() en MongoDB.

Vamos a crear algunos datos de ejemplo:

use mylab_database
db.users.insertMany([
    { name: "Alice Wilson", age: 28, status: "inactivo" },
    { name: "Charlie Brown", age: 40, status: "inactivo" },
    { name: "David Lee", age: 35, estado: "activo" },
    { name: "Eve Taylor", age: 45, status: "inactivo" }
])

Salida de ejemplo:

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

Ahora, use deleteMany() para eliminar a todos los usuarios con el estado "inactivo":

db.users.deleteMany({ status: "inactivo" })

Salida esperada:

{ acknowledged: true, deletedCount: 3 }

Puntos clave sobre deleteMany():

  • Elimina todos los documentos que coinciden con los criterios especificados
  • Devuelve el número total de documentos eliminados
  • Proporciona una forma eficiente de eliminar múltiples registros simultáneamente

Verifique los documentos restantes:

db.users.find()

La salida esperada mostrará solo los usuarios activos en la colección.

Eliminar por condiciones

En este paso, aprenderemos a eliminar documentos utilizando condiciones complejas en MongoDB.

Cree una colección de ejemplo:

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

Salida de ejemplo:

{
  acknowledged: true,
  insertedIds: {
    '0': ObjectId("..."),
    '1': ObjectId("..."),
    '2': ObjectId("..."),
    '3': ObjectId("...")
  }
}
  1. Eliminar empleados mayores de 40 años:
db.employees.deleteMany({ age: { $gt: 40 } })

Salida esperada:

{ acknowledged: true, deletedCount: 1 }

Explicación:

  • El operador $gt significa "mayor que"
  • Este comando elimina los documentos donde la edad es mayor que 40
  1. Eliminar empleados del departamento de Ventas con un salario inferior a 55000:
db.employees.deleteMany({
    department: "Ventas",
    salary: { $lt: 55000 }
})

Salida esperada:

{ acknowledged: true, deletedCount: 1 }

Explicación:

  • $lt significa "menor que"
  • Elimina los documentos que coinciden con las condiciones de departamento y salario

Verifique los documentos restantes:

db.employees.find()

Vaciar datos de la colección

En este paso, exploraremos métodos para eliminar completamente los datos de una colección de MongoDB.

Cree una colección de ejemplo:

db.products.insertMany([
  { name: "Laptop", price: 1000, category: "Electrónica" },
  { name: "Smartphone", price: 500, category: "Electrónica" },
  { name: "Audífonos", price: 100, category: "Electrónica" }
])

Método 1: Eliminar todos los documentos utilizando deleteMany():

db.products.deleteMany({})

Salida esperada:

{ acknowledged: true, deletedCount: 3 }

Explicación:

  • Elimina todos los documentos sin eliminar la estructura de la colección
  • El filtro vacío {} se dirige a todos los documentos

Verifique que la colección esté vacía:

db.products.find()

Método 2: Eliminar la colección completa utilizando drop():

Vamos a volver a insertar los datos de ejemplo:

db.products.insertMany([
  { name: "Laptop", price: 1000, category: "Electrónica" },
  { name: "Smartphone", price: 500, category: "Electrónica" },
  { name: "Audífonos", price: 100, category: "Electrónica" }
])

Elimine la colección:

db.products.drop()

Salida esperada:

true

Explicación:

  • Elimina completamente la colección y su metadatos
  • Eliminación permanente de la colección completa

Intente buscar la colección:

db.products.find()

Esto resultará en un error que indica que la colección ya no existe.

Verificar los resultados de la eliminación

En este último paso, exploraremos técnicas para verificar las operaciones de eliminación en MongoDB.

Cree una colección de ejemplo:

db.employees.insertMany([
    { name: "Alice", department: "RRHH", salary: 50000 },
    { name: "Bob", department: "Ventas", salary: 45000 },
    { name: "Charlie", department: "Marketing", salary: 55000 },
    { name: "David", department: "Ventas", salary: 40000 }
])
  1. Eliminar empleados con salario bajo y verificar:
db.employees.deleteMany({ salary: { $lt: 45000 } })
const remainingEmployees = db.employees.countDocuments()
print("Remaining employees:", remainingEmployees)

Salida esperada:

Remaining employees: 5
  1. Verificar la eliminación utilizando find():
const lowSalaryEmployees = db.employees.find({ salary: { $lt: 45000 } }).count()
print("Low salary employees after deletion:", lowSalaryEmployees)

Salida esperada:

Low salary employees after deletion: 0
  1. Verificar los conteos de departamentos específicos:
const salesEmployees = db.employees.countDocuments({ department: "Ventas" })
print("Sales department employees:", salesEmployees)

Salida esperada:

Sales department employees: 1

Verificación integral:

print("Total employees:", db.employees.countDocuments())
print("Employees by department:")
db.employees.aggregate([
    { $group: { _id: "$department", count: { $sum: 1 } } }
])

La salida esperada mostrará el recuento total de empleados y la desglose por departamento.

[
  { _id: 'Marketing', count: 2 },
  { _id: 'Ventas', count: 1 },
  { _id: 'RRHH', count: 2 }
]

Resumen

En este laboratorio, aprendiste cómo eliminar documentos individuales utilizando el método deleteOne(), que elimina el primer documento que coincide con los criterios especificados. También exploraste cómo realizar eliminaciones masivas con el método deleteMany(), que te permite eliminar eficientemente múltiples registros que coinciden con condiciones específicas. Además, aprendiste cómo eliminar documentos por condiciones, vaciar los datos de una colección completa y verificar los resultados de la eliminación.

Los principales aprendizajes de este laboratorio son los diferentes enfoques para eliminar datos en MongoDB, desde la eliminación de documentos individuales hasta la realización de eliminaciones masivas basadas en criterios específicos. Estas habilidades son esenciales para administrar eficazmente tu base de datos y mantener la integridad de los datos.