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

113
Vistas
Agregar agregación por la condición del valor de su propia variable

Tengo dos funciones para obtener una matriz de monga usando agregación. Las funciones son completamente las mismas, excepto por una canalización: "coincidir ({startTime: {$ gte: start}})". ¿Cómo puedo dejar una función y agregar una "matemática" solo por la presencia de la variable "inicio", que es un filtro de fecha?

 let groupedByUserSessions if (lastDay) { const start = getDateFromString(lastDay); groupedByUserSessions = await getValuesByDate(start) } else { groupedByUserSessions = await getAllValues(); }

Las funciones son completamente las mismas,

 function getValuesByDate(start) { return Sessions.aggregate() .match({ startTime: { $gte: start } }) .group({ _id: { departament: "$departament", userAdName: "$userAdName" }, cleanTime: { $sum: { $subtract: ["$commonTime", "$idlingTime"] } } }) .group({ _id: { departament: "$_id.departament"}, users: { $push: {value: '$cleanTime', name: '$_id.userAdName'} }, commonCleanTime: { $sum: "$cleanTime" } }) .project({ departament: '$_id.departament', users: '$users', commonCleanTime: '$commonCleanTime', performance: { $divide: [ "$commonCleanTime", { $size: "$users" }] } });

}

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Puede dividir la tubería en una "cabeza" y una "cola" y construir la cabeza de manera diferente cuando se proporciona el argumento de start :

 function getValuesByDate(start) { let agg = Sessions.aggregate(); if (start) { agg = agg.match({ startTime: { $gte: start } }); } return agg .group({ _id: { departament: '$departament', userAdName: '$userAdName' }, cleanTime: { $sum: { $subtract: ['$commonTime', '$idlingTime'] } }, }) .group({ _id: { departament: '$_id.departament' }, users: { $push: { value: '$cleanTime', name: '$_id.userAdName' } }, commonCleanTime: { $sum: '$cleanTime' }, }) .project({ departament: '$_id.departament', users: '$users', commonCleanTime: '$commonCleanTime', performance: { $divide: ['$commonCleanTime', { $size: '$users' }] }, }); }
about 4 years ago · Juan Pablo Isaza 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