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

411
Views
MongoDb cómo escribir una consulta de agregación en el controlador java versión 3.4

No entiendo cómo escribir la consulta equivalente en Java para la versión 3.4 del controlador de esta consulta de agregación:

 db.getCollection('MYTABLE').aggregate([ {"$match": { "ID_STATUSMATRICULA": 1 } }, {"$group": { "_id": null, "TOTAL" : { $sum: 1 }, "MEDIA_APROVADOS": { "$avg": { "$cond": [ { "$eq": [ "$ID_STATUSAPROVEITAMENTO", 1 ] }, "$NR_APROVEITAMENTO", 0, ] } }, "MEDIA_REPROVADOS": { "$avg": { "$cond": [ { "$eq": [ "$ID_STATUSAPROVEITAMENTO", 2 ] }, "$NR_APROVEITAMENTO", 0, ] } }, "APROVADOS": { "$sum": { "$cond": [ { "$eq": [ "$ID_STATUSAPROVEITAMENTO", 1 ] }, 1, 0, ] } }, "REPROVADOS": { "$sum": { "$cond": [ { "$eq": [ "$ID_STATUSAPROVEITAMENTO", 2 ] }, 1, 0, ] } }, "PENDENTES": { "$sum": { "$cond": [ { "$eq": [ "$ID_STATUSAPROVEITAMENTO", 0 ] }, 1, 0, ] } } }} ])

¿Alguien puede ayudarme con esto? Encontré muchas muestras para el antiguo controlador 2.2, pero muy poca documentación para la versión 3.4.


RESUELTO Después de la respuesta de Sagar Reddy, puedo escribir el equivalente en java:

 List pma = asList(new Document("$eq", asList("$ID_STATUSAPROVEITAMENTO", 1)), "$NR_APROVEITAMENTO", 0); List pmr = asList(new Document("$eq", asList("$ID_STATUSAPROVEITAMENTO", 2)), "$NR_APROVEITAMENTO", 0); List psa = asList(new Document("$eq", asList("$ID_STATUSAPROVEITAMENTO", 1)), 1, 0); List psr = asList(new Document("$eq", asList("$ID_STATUSAPROVEITAMENTO", 2)), 1, 0); List psp = asList(new Document("$eq", asList("$ID_STATUSAPROVEITAMENTO", 0)), 1, 0); Bson match = Aggregates.match(Filters.eq("ID_STATUSMATRICULA", 1)); Bson group = Aggregates.group(null, sum("TOTAL", 1), avg("MEDIA_APROVADOS", computed("$cond", pma) ), avg("MEDIA_REPROVADOS", computed("$cond", pmr) ), sum("APROVADOS", computed("$cond", psa) ), sum("REPROVADOS", computed("$cond", psr) ), sum("PENDENTES", computed("$cond", psp) ) ); AggregateIterable<Document> cursor = mTable.aggregate(asList(match, group));
over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Puedes intentar algo como. Agregue el resto de campos a la agregación de $group similar a MEDIA_APROVADOS

 import static com.mongodb.client.model.Accumulators.*; import static com.mongodb.client.model.Aggregates.*; import static com.mongodb.client.model.Projections.*; import static java.util.Arrays.asList; Bson match = Aggregates.match(Filters.eq("ID_STATUSMATRICULA", 1)); Bson group = group(null, avg("MEDIA_APROVADOS", computed("$cond", asList(new Document("$eq", asList("$ID_STATUSAPROVEITAMENTO", 1)), "$NR_APROVEITAMENTO", 0)) ) ); collection.aggregate(asList(match, group));
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!