El Parcial 1 fue una evaluación práctica grupal (sustenación grupal) realizada aproximadamente el 14 de marzo de 2026, con un valor del 25% de la nota final del curso. Consistió en trabajar con cuatro colecciones de MongoDB que representan una plataforma universitaria de aprendizaje:Documentation Index
Fetch the complete documentation index at: https://mintlify.com/tutosrive/db-nosql-2026-1/llms.txt
Use this file to discover all available pages before exploring further.
usuarios, cursos, notas y resultadosIA. El objetivo fue demostrar dominio de consultas, agregaciones y modelado de datos en MongoDB.
Este parcial fue de carácter grupal con sustenación. Cada grupo debía importar las colecciones, escribir y ejecutar las consultas solicitadas, y sustentar sus decisiones de modelado ante el docente. Vale el 25% de la nota del curso.
Las 4 Colecciones
Las cuatro colecciones modelan los datos de una plataforma de notas inteligentes con procesamiento de IA para estudiantes universitarios. A continuación se describe el esquema de cada una con un documento de ejemplo real.1. usuarios
Contiene la información de los estudiantes registrados en la plataforma. Cada documento representa un usuario con su programa académico, semestre, tipo de plan y puntos acumulados.
Campos del esquema:
| Campo | Tipo | Descripción |
|---|---|---|
_id | ObjectId | Identificador interno de MongoDB ($oid) |
user_id | Number | Identificador único del usuario |
nombre | String | Nombre del estudiante |
programa | String | Programa académico (ej. Ingeniería de sistemas) |
semstre | Number | Semestre actual del estudiante (campo tal cual está en los datos) |
plan | String | Tipo de plan: "free" o "premium" |
2. cursos
Registra los cursos disponibles en la plataforma. Cada documento incluye el docente responsable y una referencia embebida con información básica del usuario (estudiante) que tomó el curso.
Campos del esquema:
| Campo | Tipo | Descripción |
|---|---|---|
_id | ObjectId | Identificador interno de MongoDB ($oid) |
curso_id | Number | Identificador único del curso |
nombrecurso | String | Nombre del curso |
docente | String | Nombre del docente que imparte el curso |
user_id | Number | Referencia al user_id de la colección usuarios |
user | Object | Datos embebidos del usuario: user_id, nombre, programa |
3. notas
Almacena las notas creadas por los estudiantes dentro de un curso. Cada nota tiene un comentario embebido, referencias al curso y al usuario, tipo de contenido, estado de procesamiento de IA, y una referencia embebida al resultado generado por la IA.
Campos del esquema:
| Campo | Tipo | Descripción |
|---|---|---|
_id | ObjectId | Identificador interno de MongoDB ($oid) |
note_id | Number | Identificador único de la nota |
comentario | Object | Objeto embebido con texto (String) y fecha (String) |
curso_id | Number | Referencia al curso_id de la colección cursos |
curso | Object | Datos embebidos del curso: curso_id, nombrecurso, docente |
user_id | Number | Referencia al user_id de la colección usuarios |
user | Object | Datos embebidos del usuario: user_id, nombre, programa |
tipo | String | Tipo de nota, ej. "texto" |
fecha_creacion | String | Fecha y hora de creación de la nota |
estado_procesamiento | String | Estado del procesamiento IA: "listo", "pendiente", etc. |
contenido | Object | Objeto con texto (contenido principal de la nota) |
resultado_id | Number | Referencia al resultado_id de la colección resultadosIA |
resultado | Object | Datos embebidos del resultado IA: resultado_id, resumen, lista_tareas |
4. resultadosIA
Guarda los resultados generados por la inteligencia artificial para cada nota procesada. Incluye transcripción, resumen, tareas detectadas, conceptos clave, sitios de búsqueda recomendados, preguntas de estudio y fórmulas identificadas.
Campos del esquema:
| Campo | Tipo | Descripción |
|---|---|---|
_id | ObjectId | Identificador interno de MongoDB ($oid) |
resultado_id | Number | Identificador único del resultado; referenciado por notas |
transcripcion | String | Transcripción completa del contenido procesado por la IA |
resumen | String | Resumen breve generado por la IA |
lista_tareas_o_acciones_detectadas | Array | Lista de tareas o acciones detectadas en la nota |
lista_de_conceptos_clave | Array | Conceptos clave identificados por la IA |
sitios_de_busqueda | Array | URLs de recursos recomendados por la IA para profundizar |
preguntas_estudio | Array | Preguntas de estudio generadas automáticamente |
listas_de_formulas | Array | Fórmulas matemáticas o técnicas detectadas en el contenido |
Importar las Colecciones
Antes de ejecutar cualquier consulta, importa los cuatro archivos JSON a la base de datosparcial1 con mongoimport. Asegúrate de estar en el directorio donde están los archivos .json.
Relaciones entre Colecciones
El modelo de datos combina referencias (campos numéricos comouser_id, curso_id, resultado_id) con datos embebidos (objetos user, curso, resultado dentro de otros documentos). Esta es una característica central del modelado NoSQL que se evaluó en el parcial.
cursos → usuarios
cursos.user_id referencia a usuarios.user_id.
Adicionalmente, cursos.user contiene datos embebidos del usuario (nombre, programa) para consultas rápidas sin $lookup.notas → cursos
notas.curso_id referencia a cursos.curso_id.
El objeto embebido notas.curso incluye nombre del curso y docente.notas → usuarios
notas.user_id referencia a usuarios.user_id.
El objeto embebido notas.user incluye nombre y programa del estudiante.notas → resultadosIA
notas.resultado_id referencia a resultadosIA.resultado_id.
El objeto embebido notas.resultado incluye el resumen y la lista de tareas generados por la IA.Diagrama de relaciones
$lookup: unir cursos con usuarios
Cuando se necesita información completa del usuario sin depender del objeto embebido, se puede usar $lookup:
$lookup: unir notas con resultadosIA
Consultas de Referencia
Consultas básicas para explorar y filtrar los datos del parcial.1. Listar todos los cursos con su docente
2. Buscar notas por curso
3. Usuarios con plan premium
4. Contar notas por curso (agregación)
5. Contar usuarios por programa
6. Buscar cursos de un usuario específico
Consultas Avanzadas
Agregaciones más complejas que combinan múltiples etapas del pipeline.1. Usuarios por programa con conteo y semestre promedio
2. Usuarios por semestre y plan
3. Notas con estado de procesamiento listo y su resumen IA
4. Conceptos clave más frecuentes en resultadosIA
5. Pipeline completo: notas con datos del usuario y resultado IA
Consejos para el Parcial
¿Cómo revisar la estructura de una colección?
¿Cómo revisar la estructura de una colección?
Usa Esto es especialmente útil para confirmar nombres de campos antes de escribir consultas (por ejemplo, el campo
findOne({}) para ver el primer documento con todos sus campos y tipos:semstre en usuarios tiene un error tipográfico que viene desde los datos originales).¿Cómo contar documentos en una colección?
¿Cómo contar documentos en una colección?
Tienes dos opciones:Usa
countDocuments() cuando necesites un conteo preciso o con filtros, y estimatedDocumentCount() solo para verificaciones rápidas sin filtro.¿Cómo ver los valores únicos de un campo?
¿Cómo ver los valores únicos de un campo?
Usa
distinct() para obtener un arreglo con todos los valores únicos de un campo:¿Cómo acceder a campos dentro de objetos embebidos?
¿Cómo acceder a campos dentro de objetos embebidos?
Usa la notación de punto (
"objeto.campo") para filtrar o proyectar campos dentro de subdocumentos:¿Cómo filtrar por múltiples condiciones?
¿Cómo filtrar por múltiples condiciones?
Usa operadores lógicos de MongoDB para combinar condiciones: