Gentag over hele samlingen, og find hele antallet af felter, der er
Nu kan du bruge aggregeringsoperatoren $objectToArray (SERVER-23310) til at omdanne nøgler til værdier og tælle dem. Denne operatør er tilgængelig i MongoDB v3.4.4+
For eksempel:
db.collection.aggregate([
{"$project":{"numFields":{"$size":{"$objectToArray":"$$ROOT"}}}},
{"$group":{"_id":null, "fields":{"$sum":"$numFields"}, "docs":{"$sum":1}}},
{"$project":{"total":{"$subtract":["$fields", "$docs"]}, _id:0}}
])
Første fase $project er at omdanne alle nøgler til array for at tælle felter. Andet trin $group er at summere antallet af nøgler/felter i samlingen, også antallet af behandlede dokumenter. Tredje fase $project trækker det samlede antal felter fra med det samlede antal dokumenter (da du ikke vil tælle for _id ).
Du kan nemt tilføje $avg for at tælle for gennemsnittet på den sidste fase.