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

227
Views
Mongodb Group y Count Where Column is Status

Estoy tratando de ejecutar una consulta mongo para agrupar todos mis registros por estado. Entonces quiero obtener un recuento por estado. Me las arreglé para hacer esto con una consulta de $group pero ahora me gustaría ir un paso más allá y hacer que el nombre de la propiedad refleje el estado y el valor sea igual al recuento. ¿Hay alguna manera de que pueda lograr esto?

Editar: Esto es diferente de la pregunta que se marcó como duplicada. Todavía necesito agruparla por estado y no puedo agruparla por estado y obtener una suma de estado en el mismo grupo. Las preguntas duplicadas se agrupan por nombre y obtienen una suma de registros basada en el título, que es una suma de un documento incrustado, no una suma de todos los documentos. El estado no está incrustado, es una propiedad única por documento.

Consulta Mongo:

 db.getCollection('winapplications').aggregate([ { $match: { 'WINNbr': { '$exists': true, '$ne': '' } } }, { $match: {"Status":{"$ne":"Approved"}}}, { $match: {"Status":{"$ne":""}}}, { $match: {"Status":{"$ne":null}}}, { $group: { _id: "$Status", count:{$sum:1} } } ])

Resultado:

 { "_id" : "Hold", "count" : 1.0 } { "_id" : "Pending", "count" : 235.0 } { "_id" : "Not Approved", "count" : 4199.0 } { "_id" : "Active", "count" : 1923.0 } { "_id" : "Closed", "count" : 20189.0 }

Lo que me gustaría:

 { "Hold" : 1 "Pending" : 235 "Not Approved" : 4199 "Active" : 1923 "Closed" : 20189, }

El resultado que obtengo cuando hago lo que dice la pregunta duplicada no es el resultado que estoy pidiendo:

 /* 1 */ { "_id" : "Hold", "Active" : 0.0, "Closed" : 0.0, "Pending" : 0.0, "Hold" : 1.0, "Not Approved" : 0.0 } /* 2 */ { "_id" : "Pending", "Active" : 0.0, "Closed" : 0.0, "Pending" : 235.0, "Hold" : 0.0, "Not Approved" : 0.0 } /* 3 */ { "_id" : "Not Approved", "Active" : 0.0, "Closed" : 0.0, "Pending" : 0.0, "Hold" : 0.0, "Not Approved" : 4199.0 } /* 4 */ { "_id" : "Active", "Active" : 1923.0, "Closed" : 0.0, "Pending" : 0.0, "Hold" : 0.0, "Not Approved" : 0.0 } /* 5 */ { "_id" : "Closed", "Active" : 0.0, "Closed" : 20189.0, "Pending" : 0.0, "Hold" : 0.0, "Not Approved" : 0.0 }
over 4 years ago · Santiago Trujillo
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!