Dlaczego zagregowane dane wyjściowe nie są zwracane jako DBCursor lub Lista?
Struktura agregacji została stworzona w celu rozwiązywania łatwych problemów, które w innym przypadku wymagałyby redukcji mapy.
Ta struktura jest powszechnie używana do obliczania danych, które wymagają pełnej bazy danych jako danych wejściowych i kilku dokumentów jako danych wyjściowych.
Jaka jest różnica między operatorem $match używanym w funkcji agregującej a zwykłym wyszukiwaniem w Mongodb?
Jedną z różnic, jak wspomniałeś, jest typ zwrotu. Wyniki operacji wyszukiwania zwracają jako DBCursor .
Inne różnice:
- Wynik agregacji musi być mniejszy niż 16 MB. Jeśli używasz fragmentów, pełne dane muszą być zebrane w jednym punkcie po pierwszej grupie $ lub $sortuj .
- $match jedynym celem jest poprawa mocy agregacji, ale ma też inne zastosowania, takie jak poprawa wydajności agregacji.
a także dlaczego nie możemy zliczyć dokumentów, które zostały zwrócone?
Możesz. Po prostu policz liczbę elementów w wynikowej tablicy lub dodaj następujące polecenie na końcu potoku:
{$group: {_id: null, count: {$sum: 1}}}
Dlaczego funkcja wyszukiwania nie pozwala na zmianę nazw pól, tak jak funkcja agregująca?
MongoDB jest młody i wciąż pojawiają się nowe funkcje. Może w przyszłej wersji będziemy mogli to zrobić. Zmiana nazw pól jest bardziej krytyczna w agregacji niż w znajdź .
EDYCJA (26.02.2014):
Operacje agregacji MongoDB 2.6 zwrócą kursor.
EDYCJA (2014/04/09):
MongoDB 2.6 został wydany z przewidywanymi zmianami agregacji.