sql >> Database >  >> NoSQL >> MongoDB

Een resultatenset willekeurig bestellen in mongo

Ik ben het ermee eens:het gemakkelijkste om te doen is om een ​​willekeurige waarde in uw documenten te installeren. Er hoeft ook geen enorm groot bereik aan waarden te zijn -- het aantal dat u kiest hangt af van de verwachte resultaatgrootte voor uw zoekopdrachten (1.000 - 1.000.000 verschillende gehele getallen zouden in de meeste gevallen voldoende moeten zijn).

Wanneer u uw zoekopdracht uitvoert, hoeft u zich geen zorgen te maken over het willekeurige veld - indexeer het in plaats daarvan en gebruik het om te sorteren. Aangezien er geen overeenkomst is tussen het willekeurige nummer en het document, zou u redelijk willekeurige resultaten moeten krijgen. Houd er rekening mee dat botsingen er waarschijnlijk toe zullen leiden dat documenten in natuurlijke volgorde worden geretourneerd.

Terwijl dit is zeker een hack, je hebt een heel gemakkelijke ontsnappingsroute:gezien het schemavrije karakter van MongoDB, kun je eenvoudig stoppen met het opnemen van het willekeurige veld zodra er ondersteuning is voor willekeurig sorteren op de server. Als grootte een probleem is, kunt u een batchtaak uitvoeren om het veld uit bestaande documenten te verwijderen. Er zou geen significante verandering in uw klantcode moeten zijn als u deze zorgvuldig ontwerpt.

Een alternatieve optie zou zijn om lang en diep na te denken over het aantal resultaten dat willekeurig wordt verdeeld en geretourneerd voor een bepaalde zoekopdracht. Het is misschien niet al te duur om gewoon in de klantcode te shuffelen (d.w.z. als je alleen kijkt naar de meest recente 10.000 berichten).



  1. MongoDB $split

  2. Hoe Spring-sessies configureren om met Redis in xml te werken?

  3. Naadloze schaal voor uw MongoDB-servers

  4. Waar is de meteoor MongoDB-database?