Scorri l'intera raccolta e trova l'intero numero di campi disponibili
Ora puoi utilizzare l'operatore di aggregazione $objectToArray (SERVER-23310) per trasformare le chiavi in valori e contarli. Questo operatore è disponibile in MongoDB v3.4.4+
Ad esempio:
db.collection.aggregate([
{"$project":{"numFields":{"$size":{"$objectToArray":"$$ROOT"}}}},
{"$group":{"_id":null, "fields":{"$sum":"$numFields"}, "docs":{"$sum":1}}},
{"$project":{"total":{"$subtract":["$fields", "$docs"]}, _id:0}}
])
Prima fase $project
è trasformare tutte le chiavi in array per contare i campi. Seconda fase $group
consiste nel sommare il numero di chiavi/campi in collezione, anche il numero di documenti elaborati. Terza fase $project
sta sottraendo il numero totale di campi con il numero totale di documenti (poiché non vuoi contare per _id
).
Puoi facilmente aggiungere $avg per contare come media nell'ultima fase.