Привет, я попробовал несколько решений случайной задачи.Я использовал курсор и переместил его в случайную позицию, но это было очень медленно.Затем я использовал полный набор данных и выбрал случайные элементы, что было неплохо, но могло бы быть лучше.
Лучшим решением для меня было выбрать случайные числа, взять минимальное и максимальное значения и запросить базу данных, используя:1003 *
db.collection.find({...}).skip(min).limit(max-min);
Затем я просто повторил один раз для получения результата и сравнил индекс, начиная с i = min;я ++;и взять только тот элемент, который соответствует числу в случайном наборе.Для меня было нормальным ограничить область минимума и максимума случайным образом.Я использовал логарифмический подход, чтобы выбрать размер минимального окна в соответствии с размером моей коллекции.
Результат - это действительно быстрый способ выбора случайных наборов результатов.
Надеюсь, это кому-то тоже поможет.
--- Дан