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

Jak mogę sprawdzić, czy w MongoDB jest więcej wyników zapytania?

MongoDB ma możliwe do śledzenia kursory , które umożliwiają ponowne użycie kursora po zwróceniu wszystkich danych. Wyglądałoby to mniej więcej tak:

n = 10
docs = db.documents.find({"foo": "bar"}).limit(n)
more = docs.hasNext()

Zauważ, że zostało pobranych tylko 10 dokumentów, ale kursor można sprawdzić, aby określić, czy dostępnych jest więcej obiektów. Jedynym problemem jest to, że kursory z możliwością ogonowania mogą być używane tylko w kolekcjach z ograniczeniami.

Powyższe może być również używane ze zwykłym kursorem, ale musisz zapytać o n + 1 dokumenty. Jest to w zasadzie to samo rozwiązanie, którego używasz teraz. Musisz użyć size() jednak, ponieważ uwzględnia to modyfikatory pomijania i ograniczania.

n = 10
docs = db.documents.find({"foo": "bar"}).limit(n + 1)
more = db.size() > n

Nie znam PyMongo, więc nie wiem na pewno, ale istnieje możliwość, że to rozwiązanie wysyła n + 1 pełne dokumenty do Twojej aplikacji, zamiast wymaganego n , co skutkuje niewielkim obciążeniem przepustowością. W takim przypadku możesz utworzyć funkcję po stronie serwera, która robi to samo, ale zwraca tylko obiekt zawierający n dokumenty w tablicy i flagę wskazującą, czy n + 1 dokument jest dostępny.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. wstawić pole w poddokumencie w tablicy według indeksu w MongoDB

  2. Czy powinienem uzyskać bezpośredni dostęp do mongodb?

  3. Docker-compose z Loopback i Mongodb nie łączy się z mongdb

  4. Pobierz najnowszy dokument podrzędny z Array

  5. MongoDB:Zapytanie przez hash ze specjalnymi znakami w kluczach