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

180
Visualizações
MongoDB agrega nuevos campos nombrados con valor variable

Mi pregunta es, dados pocos documentos como este

 { deliveryDay: "2021-01-14", plate: { name: "pasta", quantity: 1 } } { deliveryDay: "2021-01-16", plate: { name: "pasta", quantity: 3 } } { deliveryDay: "2021-01-16", plate: { name: "pizza", quantity: 2 } }

¿Hay una manera de obtener el resultado deseado a continuación? Traté de tener un campo con nombre personalizado con $addFields como este {"$deliveryDay": "$plate.quantity" } pero me da un error no válido. La agregación no es un problema y estoy dentro del marco de agregación, por lo que necesito hacerlo usando etapas de canalización de agregación.

resultado atendido:

 { "2021-01-14": 1, "2021-01-16": 3, plate: { name: "pasta" } } { "2021-01-14": 0, "2021-01-16": 2, plate: { name: "pizza" } }
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Entonces la idea es:

  1. Agrupe los documentos por día de deliveryDay y plate.name para obtener la suma de plate.quantity .
  2. Agrupe el resultado anterior nuevamente por name para generar una matriz de formato [{ k: "", v: "" }] .
  3. Concatene { k: "plate", v: { name: "$_id" } } en la matriz anterior.
  4. Ahora convierta la array en un objeto usando $arrayToObject .

Solución en el parque infantil de Mongo . Prueba esto:

 db.testCollection.aggregate([ { $group: { _id: { dDate: "$deliveryDay", name: "$plate.name" }, sumOfQty: { $sum: "$plate.quantity" } } }, { $group: { _id: "$_id.name", array: { $push: { k: "$_id.dDate", v: "$sumOfQty" } } } }, { $addFields: { array: { $concatArrays: ["$array", [{ k: "plate", v: { name: "$_id" } }]] } } }, { $replaceRoot: { newRoot: { $arrayToObject: "$array" } } } ]);

Producción

 /* 1 */ { "2021-01-16" : 2, "plate" : { "name" : "pizza" } }, /* 2 */ { "2021-01-14" : 1, "2021-01-16" : 3, "plate" : { "name" : "pasta" } }
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