MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Compter les champs dans une collection MongoDB

Itérer sur toute la collection et trouver le nombre total de champs qu'il y a

Vous pouvez désormais utiliser l'opérateur d'agrégation $objectToArray (SERVER-23310) pour transformer les clés en valeurs et les compter. Cet opérateur est disponible dans MongoDB v3.4.4+

Par exemple :

db.collection.aggregate([
         {"$project":{"numFields":{"$size":{"$objectToArray":"$$ROOT"}}}}, 
         {"$group":{"_id":null, "fields":{"$sum":"$numFields"}, "docs":{"$sum":1}}}, 
         {"$project":{"total":{"$subtract":["$fields", "$docs"]}, _id:0}}
])

Première étape $project est de transformer toutes les clés en tableau pour compter les champs. Deuxième étape $group consiste à additionner le nombre de clés/champs de la collection, ainsi que le nombre de documents traités. Troisième étape $project soustrait le nombre total de champs avec le nombre total de documents (Comme vous ne voulez pas compter pour _id ).

Vous pouvez facilement ajouter $avg pour compter pour la moyenne lors de la dernière étape.