MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Felder in einer MongoDB-Sammlung zählen

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ügbar

Zum 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.