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

404
Vistas
Necesita obtener el promedio de datos complejos en mongodb

No puedo encontrar el promedio de una búsqueda compleja en mongodb, usando mongoose (nodejs) (y no estoy seguro de si es posible).

Entonces, tengo una colección de Scouts. Un Scout es básicamente el voto de un usuario por un jugador, en un partido (fixture). Los artículos de exploración se ven así:

 { "_id": "6036dbbd148ccf17e82e6f14", "player": "60243968d7ec0721344514ab", "user": "601e9c826a339228e8f54305", "fixture": "602435741f2e4e263492de66", "score": 7, "text": "Lorem ipsum", "likes": 92, "createdDate": "2021-02-24T23:05:33.176Z", "__v": 0 }, { "_id": "6036dbbd148ccf17e82e6f16", "player": "60243968d7ec0721344514ab", "user": "601e9c826a339228e8f54306", "fixture": "602435741f2e4e263492de66", "score": 1, "text": "Lorem ipsum", "likes": 76, "createdDate": "2021-02-24T23:05:33.181Z", "__v": 0 },

Lo que necesito es: la puntuación media de un jugador en un partido (entre todos los usuarios). Y esto es lo que estoy intentando:

 Scout.aggregate([ { $match: { $and: [ {player: mongoose.Types.ObjectId(req.params.playerId)}, {fixture: mongoose.Types.ObjectId(req.params.fixtureId)}, ]} }, { $group: { _id: "$_id", "avgScore": { "$avg": "$score" }}} ])

Pero todo lo que obtengo como resultado es esto (que no es el resultado esperado; debería ser 4 como promedio):

 { "_id": "6036dbbd148ccf17e82e6f16", "avgScore": 1 }, { "_id": "6036dbbd148ccf17e82e6f14", "avgScore": 7 }

]

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

0

Su agregación está bien, pero se está reagrupando en el documento por _id , que siempre será diferente, así que haga esto,

 { $group: { _id: null, "avgScore": { "$avg": "$score" } } }

Pruébalo aquí: https://mongoplayground.net/p/6Qt8E69Z2d6

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