MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Conta i campi in una raccolta MongoDB

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.