Альтернативой медленному skip.limit предлагаются range queries. Но как быть в случае, когда выборка отсортирована по полю, которое принимает всего несколько значений на всю огромную коллекцию?
Я правильно понимаю, что проблема у вас в том, что ранжирование по полю, которое принимает всего несколько значений, затруднено? То есть ранжировать нужно по другому полю (когда дело касается пагинации – проще всего использовать инкрементальный уникальный айди).
Или я неправильно понял начальный вопрос вообще, в этом случае извиняюсь.
Если в нем мало значений, то нормальной сортировки ведь все равно не получится.
Ну и можно сделать сортировку, а потом ранжирование. Или наоборот в зависимости от задачи.