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.