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

180
Vistas
mongoDB: realizar collection.find() en valores calculados en documentos

Digamos que tengo los siguientes documentos en una colección:

 { "_id" : ObjectId("111e2133c57a1d6111111111"), "scores" : [ { "date" : ISODate("2021-03-29T05:00:20.965Z"), "test 1 points" : 50, "test 2 points" : 10, "total possible points" : 100 } ] } { "_id" : ObjectId("111e2133c57a1d6111111222"), "scores" : [ { "date" : ISODate("2021-03-27T05:00:20.965Z"), "test 1 points" : 30, "test 2 points" : 20, "total possible points" : 200 } ] }

Si quiero encontrar todos los documentos que tienen ("puntos de prueba 1" + "puntos de prueba 2") / "puntos posibles totales" mayores que .50, ¿hay alguna manera de hacerlo de manera eficiente con el comando MongoDB find ()?

Actualmente, estoy usando el método ineficiente de recorrer cada documento y realizar mis cálculos, luego registro el ObjectId si el valor calculado es mayor que .50.

¡Gracias por adelantado!

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

0

Demostración - https://mongoplayground.net/p/c19Xx9-Ahb-

$desenrolle los puntajes para entrar en documentos individuales, use $add $divide with $gt to validEntry como verdadero o falso.

y $hacer coincidir los documentos

 db.collection.aggregate([ { $unwind: "$scores" }, { $addFields: { validEntry: { $gt: [ { $divide: [ { $add: [ "$scores.test 1 points", "$scores.test 2 points" ] }, "$scores.total possible points" ] }, 0.5] } } }, { $match: { validEntry: true } } ])

si desea recuperar el documento original $ agrúpelos por _id y $ empuje las puntuaciones de vuelta a la matriz.

 { $group: { _id: "_id", scores: { $push: "$scores" } } }

https://mongoplayground.net/p/d8xhOHYV4kn

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