MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Wydajna paginacja agregacji MongoDB?

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 .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. ConfigurationError:Serwer pod adresem 127.0.0.1:27017 zgłasza wersję 0 drutu, ale ta wersja PyMongo wymaga co najmniej 2 (MongoDB 2.6)

  2. Ember, dane Ember i _id . MongoDB

  3. Node Js Jak pobrać plik do pamięci bez zapisywania pliku w systemie lub bez tworzenia pliku w katalogu?

  4. Jak wysłać zapytanie do zestawu obiektów z tablicą wartości w manguście?

  5. Jak przekonwertować pymongo.cursor.Cursor na dict?