Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

198
Vistas
Pregunta sobre la estructura de la base de datos MongoDB (Mongoose)

Actualmente estoy aprendiendo sobre Mongoose y nodeJS. Tengo que crear una base de datos en la que se guarden las inscripciones a los cursos y las puntuaciones por curso de los alumnos. Cada asignatura también está vinculada a un profesor. Piensa en la estructura de la base de datos. Asegúrese de poder argumentar por qué está conectando datos a través de 'incrustar' o 'referencia'. Piense también en dónde usa índices e índices únicos.

La forma en que estoy pensando actualmente:

  • Un estudiante tiene varios cursos.
  • Un curso tiene varios estudiantes.
  • Un estudiante tiene múltiples puntajes en un curso
  • Un curso tiene un profesor

Intenté hacer los siguientes esquemas de mangosta:

StudentSchema:

 const mongoose = require("mongoose"); const studentSchema = new mongoose.Schema({ name: { type: String, minLength: 3, trim: true, lowercase: true, validate: { validator: (value) => /^[az ]+$/.test(value), message: (props) => `${props.value} is not a valid name!` }, required: [ true, "Name is required" ] }, id: { type: Number, index: { unique: true }, min: [ 1, "ID must be greater than 0" ], required: [ true, "ID is required" ] }, courses : [ { type: mongoose.Schema.Types.ObjectId, ref: "Course" } ] }, { collection: "students" } ); module.exports = mongoose.model("Student", studentSchema );

Esquema del curso:

 const mongoose = require("mongoose"); const courseSchema = new mongoose.Schema({ title: { type: String, minLength: 3, trim:true, lowercase:true, validate: { validator: (value) => /^[az ]+$/.test(value), message: (props) => `${props.value} is not a valid course title` }, required: [true, "Course title is required"] }, teacher: { type: String, minLength: 3, trim: true, lowercase: true, validate: { validator: (value) => /^[az ]+$/.test(value), message: (props) => `${props.value} is not a valid teacher name` }, required: [true, "teacher is required"] }, student : { type: mongoose.Schema.Types.ObjectId, ref: "Student" } }, { collection: "courses" } ); module.exports = mongoose.model("Course", courseSchema );

Los problemas que estoy enfrentando actualmente:

  1. En StudentSchema, estoy usando una identificación porque quiero 1,2,3,4, etc. en lugar de una identificación generada aleatoriamente de MongoDB. ¿Es esta la forma correcta de hacerlo?
  2. ¿Cómo agrego puntajes a la base de datos y dónde los colocaría?
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Es realmente una cuestión de opinión.

Si necesita una identificación única por documento, debe dejar que Mongo lo maneje. Está ahí por una razón.

En mi opinión, agregaría una matriz de scores en el esquema courses .

 const mongoose = require("mongoose"); const courseSchema = new mongoose.Schema({ title: { type: String, minLength: 3, trim:true, lowercase:true, validate: { validator: (value) => /^[az ]+$/.test(value), message: (props) => `${props.value} is not a valid course title` }, required: [true, "Course title is required"] }, teacher: { type: String, minLength: 3, trim: true, lowercase: true, validate: { validator: (value) => /^[az ]+$/.test(value), message: (props) => `${props.value} is not a valid teacher name` }, required: [true, "teacher is required"] }, student : { type: mongoose.Schema.Types.ObjectId, ref: "Student" }, scores: [{ score: Number, // the grade assignment_id: mongoose.Schema.Types.ObjectId// the id to the test/quiz/homework/etc.. which was graded }], // You could also just have an array of numbers (scores) scores: { type: [Number] } }, { collection: "courses" } ); module.exports = mongoose.model("Course", courseSchema );
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda