Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

200
Vistas
¿Cómo puedo obtener una suma de sumas usando la agregación de MongoDB?

Me gustaría obtener el total (suma) del valor totalHoursForYear . Aquí está mi agregación actual:

 const byYear = await this.workHistoryModel.aggregate([ { $group: { _id: '$year', history: { $push: '$$ROOT' }, totalHoursForYear: { $sum: { $add: [ { $multiply: ['$eightHourDays', 8] }, { $multiply: ['$tenHourDays', 10] }, { $multiply: ['$twelveHourDays', 12] }, ] } }, } }, ]);

Ahora necesito obtener una suma de totalHoursForYear para obtener el total de todos los años. es posible? Parece que no puedo obtener la sintaxis correcta. Cuando intento agregar otra suma:

 $group: { ..., totalHours: { $sum: { $add: '$totalHoursForYear' }, $push: '$$ROOT' } }

Recibo un error: "El campo 'totalHours' debe especificar un acumulador"

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Cuando necesite la suma total, puede hacer otro $group con _id:null , lo que significa considerar todos los documentos

Con su script, agregue lo siguiente para obtener el total y obtener la misma estructura.

 { $group: { _id: null, data: { $push: "$$ROOT" }, total: { $sum: "$totalHoursForYear" } } }, { "$unwind": "$data" }, { "$addFields": { _id: "$data._id", history: "$data.history", totalHoursForYear: "$data.totalHoursForYear", _id: "$$REMOVE", data: "$$REMOVE" } }

Zona de juegos Mongo en funcionamiento

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda