Прегледайте цялата колекция и намерете целия брой полета, които има
Сега можете да използвате оператора за агрегиране $objectToArray (SERVER-23310), за да превърнете ключовете в стойности и да ги преброите. Този оператор е наличен в MongoDB v3.4.4+
Например:
db.collection.aggregate([
{"$project":{"numFields":{"$size":{"$objectToArray":"$$ROOT"}}}},
{"$group":{"_id":null, "fields":{"$sum":"$numFields"}, "docs":{"$sum":1}}},
{"$project":{"total":{"$subtract":["$fields", "$docs"]}, _id:0}}
])
Първи етап $project
е да превърнете всички ключове в масив за преброяване на полета. Втори етап $group
е да се сумират броят на ключовете/полета в колекцията, също и броят на обработените документи. Трети етап $project
изважда общия брой полета с общия брой документи (тъй като не искате да броите за _id
).
Можете лесно да добавите $avg, за да се брои средно на последния етап.