150 votes

mongodb count num of distinct values per field/key

Existe-t-il une requête permettant de calculer le nombre de valeurs distinctes qu'un champ contient dans la base de données ?

Par exemple, j'ai un champ pour le pays et il y a 8 types de valeurs de pays (Espagne, Angleterre, France, etc...).

Si quelqu'un ajoute d'autres documents avec un nouveau pays, je voudrais que la requête renvoie 9.

Y a-t-il un moyen plus simple que de regrouper et de compter ?

8voto

Rea Haas Points 71

J'utilise cette requête :

var collection = "countries"; var field = "country"; 
db[collection].distinct(field).forEach(function(value){print(field + ", " + value + ": " + db[collection].count({[field]: value}))})

Sortie :

countries, England: 3536
countries, France: 238
countries, Australia: 1044
countries, Spain: 16

Cette requête distingue d'abord toutes les valeurs, puis compte pour chacune d'entre elles le nombre d'occurrences.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X