Title: Actividad 21: Práctica de comandos básicos en MongoDB (Registro de usuarios y búsquedas)
Course: 2025 - LISI - Base de Datos Avanzadas 3-3 > Section: Unidad 4 - Bases de datos no relacionales (NoSQL)

🎯 Objetivo

Practicar el uso de comandos básicos de MongoDB, insertar documentos, crear índices únicos, realizar consultas con diferentes parámetros y comprender el uso del correo electrónico como llave única en una colección.

🧠 Instrucciones

1. Encabezado obligatorio:
  - Nombre completo del alumno.
  - Nombre del profesor.
  - Materia: Base de Datos Avanzadas.
  - Número de la actividad.

📌 Parte 1: Crear la base de datos y colección

1. En tu consola (mongosh, CMD o PowerShell), crea una base de datos llamada:

use base_avanzada_usuarios


1. Crea una colección llamada usuarios:

db.createCollection("usuarios")


📌 Parte 2: Insertar registros de usuarios

Cada usuario debe tener al menos estos campos:

- nombre
- apellido
- correo
- edad
- activo (true/false)

Ejemplo de estructura (NO COPIAR, solo como guía):

{
  nombre: "Erick",
  apellido: "Sánchez",
  correo: "erick@example.com",
  edad: 25,
  activo: true
}


1. Inserta mínimo 5 usuarios, incluyendo tu propio nombre.
Usa insertOne() e insertMany().

📌 Parte 3: Asignar el correo como llave única

Crea un índice único en el campo correo:

db.usuarios.createIndex({ correo: 1 }, { unique: true })


1. Prueba la restricción:
  - Intenta insertar otro usuario con el mismo correo para verificar que MongoDB bloquea duplicados.
  - Documenta el error que aparece en consola.

📌 Parte 4: Consultas con diferentes parámetros

Realiza las siguientes búsquedas y muestra en el PDF sus resultados:

🔍 1. Buscar por correo

db.usuarios.find({ correo: "AQUI_TU_CORREO" })


🔍 2. Buscar todos los usuarios activos

db.usuarios.find({ activo: true })


🔍 3. Buscar usuarios mayores de cierta edad (ejemplo: > 20)

db.usuarios.find({ edad: { $gt: 20 } })


🔍 4. Buscar usuarios por nombre usando coincidencia parcial (expresiones regulares)

db.usuarios.find({ nombre: /a/i })


🔍 5. Ordenar usuarios por edad ascendente

db.usuarios.find().sort({ edad: 1 })


🔍 6. Mostrar solo los correos de todos los usuarios

db.usuarios.find({}, { correo: 1, _id: 0 })


📌 Parte 5: Eliminación y actualización

1. Actualiza la edad de uno de tus usuarios:

db.usuarios.updateOne(
  { correo: "AQUI_TU_CORREO" },
  { $set: { edad: NUEVA_EDAD } }
)


1. Elimina un usuario por correo:

db.usuarios.deleteOne({ correo: "AQUI_TU_CORREO" })


📄 Evidencia (PDF obligatorio)

Incluye:

- Capturas de consola de:
  - La creación del índice único.
  - Los intentos de inserción duplicada (y el error).
  - Los resultados de las búsquedas.
  - Actualización y eliminación de usuarios.
- Código y resultados visibles.
- Todos los datos deben mostrar tu nombre y el del profesor dentro del documento.

🧠 Reflexión final (5 líneas)

Explica por qué es importante tener una llave única en una base de datos NoSQL y qué ventajas aporta para evitar inconsistencias de información.

🎯 Objetivo

Practicar el uso de comandos básicos de MongoDB, insertar documentos, crear índices únicos, realizar consultas con diferentes parámetros y comprender el uso del correo electrónico como llave única en una colección.

🧠 Instrucciones

1. Encabezado obligatorio:
  - Nombre completo del alumno.
  - Nombre del profesor.
  - Materia: Base de Datos Avanzadas.
  - Número de la actividad.

📌 Parte 1: Crear la base de datos y colección

1. En tu consola (mongosh, CMD o PowerShell), crea una base de datos llamada:

use base_avanzada_usuarios


1. Crea una colección llamada usuarios:

db.createCollection("usuarios")


📌 Parte 2: Insertar registros de usuarios

Cada usuario debe tener al menos estos campos:

- nombre
- apellido
- correo
- edad
- activo (true/false)

Ejemplo de estructura (NO COPIAR, solo como guía):

{
  nombre: "Erick",
  apellido: "Sánchez",
  correo: "erick@example.com",
  edad: 25,
  activo: true
}


1. Inserta mínimo 5 usuarios, incluyendo tu propio nombre.
Usa insertOne() e insertMany().

📌 Parte 3: Asignar el correo como llave única

Crea un índice único en el campo correo:

db.usuarios.createIndex({ correo: 1 }, { unique: true })


1. Prueba la restricción:
  - Intenta insertar otro usuario con el mismo correo para verificar que MongoDB bloquea duplicados.
  - Documenta el error que aparece en consola.

📌 Parte 4: Consultas con diferentes parámetros

Realiza las siguientes búsquedas y muestra en el PDF sus resultados:

🔍 1. Buscar por correo

db.usuarios.find({ correo: "AQUI_TU_CORREO" })


🔍 2. Buscar todos los usuarios activos

db.usuarios.find({ activo: true })


🔍 3. Buscar usuarios mayores de cierta edad (ejemplo: > 20)

db.usuarios.find({ edad: { $gt: 20 } })


🔍 4. Buscar usuarios por nombre usando coincidencia parcial (expresiones regulares)

db.usuarios.find({ nombre: /a/i })


🔍 5. Ordenar usuarios por edad ascendente

db.usuarios.find().sort({ edad: 1 })


🔍 6. Mostrar solo los correos de todos los usuarios

db.usuarios.find({}, { correo: 1, _id: 0 })


📌 Parte 5: Eliminación y actualización

1. Actualiza la edad de uno de tus usuarios:

db.usuarios.updateOne(
  { correo: "AQUI_TU_CORREO" },
  { $set: { edad: NUEVA_EDAD } }
)


1. Elimina un usuario por correo:

db.usuarios.deleteOne({ correo: "AQUI_TU_CORREO" })


📄 Evidencia (PDF obligatorio)

Incluye:

- Capturas de consola de:
  - La creación del índice único.
  - Los intentos de inserción duplicada (y el error).
  - Los resultados de las búsquedas.
  - Actualización y eliminación de usuarios.
- Código y resultados visibles.
- Todos los datos deben mostrar tu nombre y el del profesor dentro del documento.

🧠 Reflexión final (5 líneas)

Explica por qué es importante tener una llave única en una base de datos NoSQL y qué ventajas aporta para evitar inconsistencias de información.