Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

188
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!