MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Campos de contagem em uma coleção do MongoDB


Iterar em toda a coleção e encontrar o número total de campos que existem

Agora você pode utilizar o operador de agregação $objectToArray (SERVER-23310) para transformar chaves em valores e contá-los. Este operador está disponível no MongoDB v3.4.4+

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

Primeiro estágio $project é transformar todas as chaves em array para contar campos. Segundo estágio $group é somar o número de chaves/campos na coleção, também o número de documentos processados. Terceiro estágio $project está subtraindo o número total de campos com o número total de documentos (Como você não quer contar para _id ).

Você pode facilmente adicionar $ avg para contar a média no último estágio.