`skip` must walk past many documents, so deep pages get slower. A better pattern is range/seek pagination (e.g., by `_id` or a createdAt index) using “greater than last seen” with sorting.
db.posts.find({ _id: { $gt: lastId } })
.sort({ _id: 1 })
.limit(20)