sql >> Databáze >  >> NoSQL >> MongoDB

Náhodné řazení sady výsledků v mongo

Musím souhlasit:nejjednodušší je nainstalovat do dokumentů náhodnou hodnotu. Nemusí existovat ani ohromně velký rozsah hodnot – počet, který zvolíte, závisí na očekávané velikosti výsledků pro vaše dotazy (1 000 – 1 000 000 různých celých čísel by pro většinu případů mělo stačit).

Když spustíte dotaz, nedělejte si starosti s náhodným polem – místo toho jej indexujte a použijte k řazení. Protože mezi náhodným číslem a dokumentem neexistuje žádná korespondence, měli byste získat poměrně náhodné výsledky. Upozorňujeme, že kolize pravděpodobně způsobí, že se dokumenty vrátí v přirozeném pořadí.

Zatímco toto je jistě hack, máte velmi snadnou únikovou cestu:vzhledem k tomu, že MongoDB je bez schémat, můžete jednoduše přestat zahrnovat náhodné pole, jakmile bude na serveru podpora náhodného řazení. Pokud je velikost problémem, můžete spustit dávkovou úlohu a odstranit pole ze stávajících dokumentů. Pokud jej navrhnete pečlivě, nemělo by dojít k významné změně kódu klienta.

Alternativní možností by bylo dlouze přemýšlet o počtu výsledků, které budou randomizovány a vráceny pro daný dotaz. Jednoduše promíchat klientský kód nemusí být příliš drahé (tj. pokud vezmete v úvahu pouze posledních 10 000 příspěvků).



  1. Promítnout první položku v poli do nového pole (agregace MongoDB)

  2. Jak nakonfigurovat MongoDB Java ovladač MongoOptions pro produkční použití?

  3. MongoError:Nelze extrahovat geografické klíče z objektu s Type:Point

  4. 10 otázek, které je třeba položit (a odpovědět) při hostování MongoDB na AWS