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

117
Visualizações
Formato de respuesta de agregación de MongoDB a clave única en Nodejs

Recibo una respuesta de la consulta de agregación de mongoDB que son datos agrupados y campos seleccionados dinámicamente que están en el objeto "projectionObj":

Aquí está mi consulta de agregación mongodb:

 let projectionObj = { "date": 1, "height": 1, "bmi": 1, "level": 1, } UpdateForm.aggregate([ { $match: { "id": id, "date": { "$gte": startdate, "$lte": enddate, }}}, { $group: { _id: { year: { $year: "$date" }, month: { $month: "$date" }, day: { $dayOfMonth: "$date" }, }, items: { $push: '$$ROOT', }}}, {$project: { "_id": 0, "items": projectionObj }}, ])

Y a continuación se muestra el resultado de la agregación :

 [ { items: [{ date: "2022-03-11", height: '1', bmi: '1', level: '1' }, { date: "2022-03-11", height: '2', bmi: '2', level: '2' }] }, { items: [{ date: "2022-03-08", height: '3', bmi: '3', level: '3' }] } ]

Quiero formatear el resultado de la agregación al formato deseado que se proporciona a continuación

 { categories: ["2022-03-11", "2022-03-11", "2022-03-08"], series: [ {name: "height", data: [1,2,3]}, {name: "bmi", data: [1,2,3]}, {name: "level", data: [1,2,3]}, ] }
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

primero ejecuté flatMap en la matriz y obtuve una matriz de elementos individuales. luego ejecutó reduce para agrupar las series según los nombres y para agregar fechas a categories .
Pero ahora la serie es un objeto. para convertirlo en una matriz según lo necesite, anulé la series en el resultado final para tomar la matriz de valores agrupados usando Object.values

 let a = [ { items: [{ date: "2022-03-11", height: '1', bmi: '1', level: '1' }, { date: "2022-03-11", height: '2', bmi: '2', level: '2' }] }, { items: [{ date: "2022-03-08", height: '3', bmi: '3', level: '3' }] } ] let res = a.flatMap(el => el.items).reduce((acc,{date,...curr})=>{ acc.categories.push(date) Object.entries(curr).forEach(([k,v])=>{ if(!acc.series[k])acc.series[k]={name:k,data:[]} acc.series[k].data.push(parseInt(v)) }) return acc; },{categories:[],series:{}}) res = {...res,series:Object.values(res.series)} console.log(res)
 .as-console-wrapper { max-height: 100% !important; top: 0; }

about 4 years ago · Juan Pablo Isaza 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