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

198
Visualizações
¿Cómo agrupar en un valor de campo que está dentro de una matriz en MongoDB?

Tengo un sistema de calificación de estudiantes que utiliza MongoDB. Tengo los siguientes documentos en MongoDB:

¿Cómo obtengo el número de estudiantes que obtuvieron grade "A","B","C","D" para una subject en particular? El "_id" para cada sujeto sigue siendo el mismo.

 { _id: "60b223541338467beaf3ae0d", studentName: "John Doe" studentGradingDetails: [ { _id: "60b21e47e5462929cab27a98", term: "semester-1", subject: "chemistry", grade: "A", createdAt: "2021-05-29T10:58:15.113Z", }, { _id: "60b21e47e5462929cab27a99", term: "semester-2", subject: "computer_science", grade: "B", createdAt: "2021-05-29T10:58:15.113Z", }, ], createdAt: "2021-05-29T11:19:48.770Z", } { _id: "60b223541338467beaf3ae0e", studentName: "Will Smith" studentGradingDetails: [ { _id: "60b21e47e5462929cab27a98", term: "semester-1", subject: "chemistry", grade: "D", createdAt: "2021-05-29T10:58:15.113Z", }, { _id: "60b21e47e5462929cab27a99", term: "semester-2", subject: "computer_science", grade: "A", createdAt: "2021-05-29T10:58:15.113Z", }, ], createdAt: "2021-05-29T11:19:48.770Z", }

Esto es lo que probé y me quedé, ¿no estoy seguro de cuáles son los siguientes pasos?

 await db.collection("studentsemestergrades") .aggregate([ { $unwind: "$studentGradingDetails" }, { $group: { _id: "$studentGradingDetails._id", }, }, ]) .toArray();

Rendimiento esperado:

Distribución de alumnos con diferentes notas en cada materia (_id )

 { "_id" : "60b21e47e5462929cab27a98", "A" : 12, "B" : 20, "C" : 8, "D" : 2 }, { "_id" : "60b21e47e5462929cab27a99", "A" : 5, "B" : 2, "C" : 8, "D" : 12 }
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

  • $unwind deconstruye la matriz studentGradingDetails
  • $group por _id y grade y obtener el recuento total
  • $group solo por _id y construir la matriz de pares clave-valor del objeto con grade y count
  • $arrayToObject convierte la matriz de par clave-valor anterior en objeto
  • $mergeObjects para fusionar el objeto convertido y el campo _id , puede agregar más campos si es necesario
  • $replaceRoot para reemplazar el objeto de combinación anterior a la raíz
 await db.collection("studentsemestergrades").aggregate([ { $unwind: "$studentGradingDetails" }, { $group: { _id: { _id: "$studentGradingDetails._id", grade: "$studentGradingDetails.grade" }, count: { $sum: 1 } } }, { $group: { _id: "$_id._id", grades: { $push: { k: "$_id.grade", v: "$count" } } } }, { $replaceRoot: { newRoot: { $mergeObjects: [ { _id: "$_id" }, { $arrayToObject: "$grades" } ] } } } ])

Patio de juegos

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