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

108
Visualizações
Aplicando group by en pipeline de agregado con 2 documentos coincidentes

Necesito aplicar group by en un campo llamado material y sum aggregator en raiseGrnQuantity. Tanto este material como raiseGrnQuantity están en una matriz poDetails. He construido una tubería de agregación para dar una idea aproximada de lo que realmente estoy tratando de hacer:

 var projectQry = [ { "$unwind": { path : '$poDetails', preserveNullAndEmptyArrays: true } }, { $match: { "trackNo": campaignId, "vendorNo": vendorNo, "poDetails.material": output[i].materialCode, "status": "Pending" } }, { $project: { "poDetails.raisedGrnQuantity": 1, "poDetails.material": 1 } } ];

El resultado de esta canalización de agregación es:

 [ { _id: 62de2e7f1ad8470012b9dc75, poDetails: { material: '300000114', raisedGrnQuantity: '20' } }, { _id: 62de30ea1ad8470012b9dc78, poDetails: { material: '300000114', raisedGrnQuantity: '15' } } ] [ { _id: 62de2e7f1ad8470012b9dc75, poDetails: { material: '910000029', raisedGrnQuantity: '10' } }, { _id: 62de30ea1ad8470012b9dc78, poDetails: { material: '910000029', raisedGrnQuantity: '5' } } ]

Si nos damos cuenta, hay dos matrices diferentes en la salida porque tengo dos documentos coincidentes diferentes en la base de datos.

Ahora, lo que quiero hacer exactamente es aplicar el grupo por en el material y la agregación de la suma en raiseGrnQuantity para que tenga un resultado como el siguiente:

 { raisedGrnQuantity: '35' material: '300000114' }, { raisedGrnQuantity: '15' material: '910000029' }

Intenté usar el siguiente grupo en la canalización, pero no está dando el resultado correcto. En lugar de la suma de raiseGrnQuantity, muestra 0.

 $group: { _id: "$poDetails.material", raisedGrnQuantity: { $sum: "$poDetails.raisedGrnQuantity" } }

Sospecho que el problema se debe a dos documentos coincidentes que hacen que la salida sea dos matrices diferentes.

about 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

El problema que tiene es que el tipo de "podDetail.raisedGrnQuantity" es una cadena, por lo que $sum lo ignora.

Todo lo que necesita hacer es convertirlo en un número usando $toInt , así:

 { $group: { _id: "$poDetails.material", raisedGrnQuantity: { $sum: { "$toInt": "$poDetails.raisedGrnQuantity" } } } }

Parque infantil Mongo

about 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