J'essaie de compter des valeurs distinctes de champs multiples Par une requête MongoDB Agrégation.Nombre distinct de plusieurs champs utilisant l'agrégation mongodb
Alors, voici mes données:
{
"car_type": "suv",
"color": "red",
"num_doors": 4
},
{
"car_type": "hatchback",
"color": "blue",
"num_doors": 4
},
{
"car_type": "wagon",
"color": "red",
"num_doors": 4
}
Je veux un compte distinct de chaque champ:
distinct_count_car_type=3
distinct_count_color=2
distinct_count_num_doors=1
j'ai pu regrouper plusieurs champs, puis faire un compte distinct, mais il ne peut donner moi un compte sur le premier champ. Pas tous. Et c'est aussi un grand ensemble de données.
Malheureusement j'utilise mongodb 3.2 et $ objectToArray je pense que selon le manuel a été introduit en 3.4. – Deckard
Correct. Je recommande la mise à niveau vers 3.4.4. –
J'ai donc mis à jour et essayé votre solution. Le problème que j'ai maintenant est que les champs dynamiques sur lesquels je voulais compter sont en fait dans un tableau parce qu'ils proviennent d'une recherche $ d'une autre collection. La collection en haut de la question est dans un tableau sur mes résultats en raison d'une recherche $. Donc quand j'essaye de faire un $ objectToArray sur le champ, je reçois "$ objectToArray nécessite une entrée de document, found: array". Et j'ai essayé $ arrayToObject d'abord pour pouvoir ensuite appeler $ objectToArray dessus et je reçois "$ arrayToObject nécessite un objet keys de 'key' et 'v' .Trouvé nombre de clés incorrect: 5". – Deckard