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 }