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

mongodb.countDocuments działa wolno, gdy zestaw wyników jest duży, nawet jeśli używany jest indeks

Liczenie wydaje się jak jedna z tych rzeczy, które powinny być tanie, ale często nie są. Ponieważ mongo nie przechowuje liczby dokumentów spełniających określone kryteria w swoim indeksie b-drzewa, musi skanować dokumenty zliczania indeksów w miarę postępu. Oznacza to, że policzenie 100 razy dokumentów zajmie 100 razy więcej czasu i mniej więcej to widzimy tutaj -- 0.018 * 100 = 1.8s .

Aby to przyspieszyć, masz kilka możliwości:

  1. Aktywna liczba to mniej więcej estimatedDocumentCount() - db.users.countDocuments({status: 'inactive'}) . Czy to byłoby wystarczająco dokładne dla Twojego przypadku użycia?
  2. Alternatywnie możesz utrzymywać counts dokument w oddzielnej kolekcji, którą synchronizujesz z liczbą aktywnych/nieaktywnych dokumentów, które posiadasz.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodb - Nieprawidłowy znak błędu Mongoimport

  2. Zbiorcza aktualizacja dokumentów w MongoDB

  3. zapytanie mongodb, aby dopasować każdy element w tablicy dokumentów do warunku

  4. Jak wyszukiwać dokumenty za pomocą pola _id w sterowniku Java mongodb?

  5. MongoDB $cosh