Próbuję zliczyć różne wartości wielu pól za pomocą jednego zapytania o agregację MongoDB.Wyraźna liczba wielu pól przy użyciu agregacji mongodb
Więc oto moje dane:
{
"car_type": "suv",
"color": "red",
"num_doors": 4
},
{
"car_type": "hatchback",
"color": "blue",
"num_doors": 4
},
{
"car_type": "wagon",
"color": "red",
"num_doors": 4
}
Chcę odrębny licznik poszczególnych pól:
distinct_count_car_type=3
distinct_count_color=2
distinct_count_num_doors=1
udało mi się wiele pól grupy, a następnie zrobić odrębny licznik ale to może tylko dać ja liczę na pierwszym polu. Nie wszyscy z nich. A także jest to duży zestaw danych.
Niestety używam mongodb 3.2 i $ objectToArray Myślę, że zgodnie z instrukcją został wprowadzony w 3.4. – Deckard
Prawidłowo. Zaleciłbym uaktualnienie do wersji 3.4.4. –
Tak więc uaktualniłem i wypróbowałem twoje rozwiązanie. Problem, który mam teraz, to te dynamiczne pola, które chciałem zrobić, by były wyraźnie liczone, są w rzeczywistości w tablicy, ponieważ pochodzą z wyszukiwania $ z innej kolekcji. Kolekcja na górze pytania znajduje się w tablicy z wynikami wyszukiwania $. Tak więc, gdy próbuję wykonać $ objectToArray na polu, otrzymuję "$ objectToArray wymaga wejścia do dokumentu, znalezionego: tablica". I najpierw wypróbowałem $ arrayToObject, aby móc wywołać na nim obiekt $ objectToArray i otrzymam polecenie "$ arrayToObject wymaga kluczy obiektowych" klucza "i" v "Znaleziona niepoprawna liczba kluczy: 5". – Deckard