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

178
Visualizações
Cómo agrupar una matriz de objetos en mongodb

soy nuevo en mongodb y tengo problemas para agrupar una matriz de un documento como este:

 _id: ObjectId('5d7afa2609d6ed000dffe1de') email: "email@email.com" transactions: [ { "date": "2020-06-10T00:00:00.000+00:00", "shares": 100, "price": 20, "type": "buy", "equity_id": "petr4" }, { "date": "2020-07-10T00:00:00.000+00:00", "shares": 200, "price": 10, "type": "sell", "equity_id": "petr4" }, { "date": "2020-06-10T00:00:00.000+00:00", "shares": 250, "price": 30, "type": "buy", "equity_id": "vale3" }, ... ]

Me gustaría agrupar estas transacciones por fecha y obtener un documento como este:

 _id: ObjectId('5d7afa2609d6ed000dffe1de') email: "email@email.com" transactionsByDay: { "2020-06-10": [ { "shares": 100, "price": 20, "type": "buy", "equity_id": "petr4" }, { "shares": 250, "price": 30, "type": "buy", "equity_id": "petr4" } ], "2020-07-10": [ { "shares": 200, "price": 10, "type": "sell", "equity_id": "petr4" } ], ... }

Intenté una agregación usando un operador de grupo pero el resultado no fue el esperado. Alguien me puede dar una ayuda para solucionar esto?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Esto se puede lograr en dos pasos.

 let arr = [ { "date": "2020-06-10T00:00:00.000+00:00", "shares": 100, "price": 20, "type": "buy", "equity_id": "petr4" }, { "date": "2020-07-10T00:00:00.000+00:00", "shares": 200, "price": 10, "type": "sell", "equity_id": "petr4" }, { "date": "2020-06-10T00:00:00.000+00:00", "shares": 250, "price": 30, "type": "buy", "equity_id": "vale3" } ] let transactionsByDay = arr.reduce((a,e,i) => { if(e.type == 'buy') a['buy'].push(e) else if(e.type == 'sell') a['sell'].push(e) return a },{buy : [], sell: []}) Object.keys(transactionsByDay).map(id => { transactionsByDay[`${transactionsByDay[id][0].date.slice(0,10)}`] = [...transactionsByDay[id]]; delete transactionsByDay[id]; }) console.log(transactionsByDay)

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