sql >> Base de Datos >  >> NoSQL >> MongoDB

Contar campos en una colección MongoDB

Iterar sobre toda la colección y encontrar el número total de campos que hay

Ahora puede utilizar el operador de agregación $objectToArray (SERVER-23310) para convertir claves en valores y contarlos. Este operador está disponible en MongoDB v3.4.4+

Por ejemplo:

db.collection.aggregate([
         {"$project":{"numFields":{"$size":{"$objectToArray":"$$ROOT"}}}}, 
         {"$group":{"_id":null, "fields":{"$sum":"$numFields"}, "docs":{"$sum":1}}}, 
         {"$project":{"total":{"$subtract":["$fields", "$docs"]}, _id:0}}
])

Primera etapa $project es convertir todas las claves en una matriz para contar campos. Segunda etapa $group es sumar el número de claves/campos en la colección, también el número de documentos procesados. Tercera etapa $project está restando el número total de campos con el número total de documentos (como no desea contar para _id ).

Puede agregar fácilmente $avg para contar el promedio en la última etapa.