Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

200
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda