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

Zamawianie zestawu wyników losowo w mongo

Muszę się zgodzić:najłatwiej jest wpisać do dokumentów losową wartość. Nie musi też istnieć bardzo duży zakres wartości — wybrana liczba zależy od oczekiwanej wielkości wyników dla zapytań (w większości przypadków wystarczy 1000-1 000 000 odrębnych liczb całkowitych).

Kiedy uruchamiasz zapytanie, nie martw się o pole losowe — zamiast tego zindeksuj je i użyj do sortowania. Ponieważ nie ma związku między liczbą losową a dokumentem, powinieneś otrzymać dość losowe wyniki. Pamiętaj, że kolizje prawdopodobnie spowodują zwrot dokumentów w naturalnej kolejności.

Chociaż to jest z pewnością jest to hack, masz bardzo łatwą drogę ucieczki:biorąc pod uwagę wolną od schematów naturę MongoDB, możesz po prostu przestać dołączać pole losowe, gdy na serwerze pojawi się obsługa sortowania losowego. Jeśli rozmiar stanowi problem, możesz uruchomić zadanie wsadowe, aby usunąć pole z istniejących dokumentów. Nie powinno być znaczących zmian w kodzie klienta, jeśli zaprojektujesz go ostrożnie.

Alternatywną opcją byłoby długie i intensywne myślenie o liczbie wyników, które zostaną losowo zwrócone i zwrócone dla danego zapytania. Samo przetasowanie kodu klienta może nie być zbyt drogie (tj. jeśli weźmiesz pod uwagę tylko najnowsze 10 000 postów).



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Transakcja Mongodb v4.0, MongoError:Numery transakcji są dozwolone tylko na członku zestawu replik lub mongos

  2. Jednostki używane dla maxdistance i MongoDB?

  3. Usuń klucz z dokumentu MongoDB za pomocą Mongoose

  4. MongoDB $oid kontra ObjectId

  5. MongoDB Relacja jeden do wielu