Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

186
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda