Iterieren Sie über die gesamte Sammlung und finden Sie die gesamte Anzahl von Feldern, die es gibt
Jetzt können Sie den Aggregationsoperator $objectToArray (SERVER-23310) verwenden, um Schlüssel in Werte umzuwandeln und sie zu zählen. Dieser Operator ist in MongoDB v3.4.4+
verfügbarZum Beispiel:
db.collection.aggregate([
{"$project":{"numFields":{"$size":{"$objectToArray":"$$ROOT"}}}},
{"$group":{"_id":null, "fields":{"$sum":"$numFields"}, "docs":{"$sum":1}}},
{"$project":{"total":{"$subtract":["$fields", "$docs"]}, _id:0}}
])
Erste Stufe $project
besteht darin, alle Schlüssel in ein Array umzuwandeln, um Felder zu zählen. Zweite Stufe $group
besteht darin, die Anzahl der Schlüssel/Felder in der Sammlung sowie die Anzahl der verarbeiteten Dokumente zu summieren. Dritte Stufe $project
subtrahiert die Gesamtzahl der Felder von der Gesamtzahl der Dokumente (da Sie nicht für _id
zählen möchten ).
Sie können ganz einfach $avg hinzufügen, um auf der letzten Stufe als Durchschnitt zu zählen.