W metodach kursora MongoDB (np. przy użyciu find()
) jak limit
, sort
, skip
można zastosować w dowolnej kolejności => kolejność nie ma znaczenia. find()
zwraca kursor, na którym zastosowano modyfikacje. Sortowanie odbywa się zawsze przed limitem, pomijanie również przed limitem. Innymi słowy kolejność jest następująca:sortuj -> pomiń -> limit .
Struktura agregacji nie zwraca kursora bazy danych. Zamiast tego zwraca dokument z wynikami agregacji. Działa poprzez generowanie wyników pośrednich na każdym etapie rurociągu, a zatem kolejność operacji naprawdę ma znaczenie.
Wydaje mi się, że MongoDB nie obsługuje kolejności metod modyfikujących kursor ze względu na sposób, w jaki jest zaimplementowana wewnętrznie.
Nie można stronicować wyników struktury agregacji, ponieważ istnieje jeden dokument zawierający tylko wyniki. Nadal możesz dzielić się na strony w zwykłym zapytaniu, używając funkcji pomijania i ograniczania, ale lepszą praktyką byłoby użycie zapytania zakresowego ze względu na efektywność korzystania z indeksu.
AKTUALIZACJA:
Od wersji 2.6 Mongo framework agregacji zwraca kursor zamiast pojedynczego dokumentu. Porównaj:v2.4 i v2.6 .