Thanks for your response, Pavel!
Excuse my bad english - its not my mothertongue.
The requirement to sort matches randomly is because fairness to the customer companies. It shall not happened, that some company-announcements for any reason is listened always behind other companies announcements, if filter-matching in the announcement-search is identitcal.
Its an easy task, when fetch all data at once, but I had to use §skip" functionality, so that I can fetch chunk-wise. Therefore its important, that the random-value I add as a field to sort in second dimension (first dimension sort is for prioritized filter-criteriy), stays at least for some time the same.
Actually I have done this dirty solution, which works, but hasnt good scalebility:
I create array and fill it with random numbers with array-length of 2000. the seed for randomization I set every hour, so the array stays constant on the one hand and chunk-wise fetching with §skip works, but also change regulary so no company is prioritized to others in the long term. Then I do $addField with randomNumber and give the value witch $arrayElementAt {randomNumberArray, elementShortID}
The elementShortId is a incremental Number every company-announce gets when insert to the DB as a document. This solution works so far, but I will get problems, when the values of the shortId increase. The length of the random array will increase more and more and its a waste of time. From a length of 2000 on you feel allready slowing down the search on the website and thats super bad user-experience.
As it is now it will work maybe for a few months, but I need a better concept, because increase of customer-announces so I can achieve the same effect but faster. I cant and shouldnt work with this up-bloated helper-array.
So Im searching for alternative concepts.
I hope I could described it better in this post here.