В эластике есть свой курсорный поиск. Они состояние и выборку у себя на сервере хранят. Там полегче и побыстрее всё это работает.
С монгой же, прям мегооптимально как на эластике не получится, но тоже вполне сносно можно сделать.
На недельку правда надо провалиться, чтоб все кейсы правильно разобрать, особенно когда вам прилетает 3 параметра after, last, first - надо взять дата-сет после курсора, получить последние last элементов, и уже из них дернуть первые first элементов. Вроле не так сложно, но я раза с 3го только правильно по спеке реализовал такие кейсы.