Я хочу реализовать разбиение на страницы поверх MongoDB. Для моего запроса диапазона я подумал об использовании ObjectID:
db.tweets.find({ _id: { $lt: maxID } }, { limit: 50 })
Однако в соответствии с документами структура ObjectID означает, что "значения ObjectId не представляют строгий порядок вставки":
Связь между порядком значений ObjectId и временем генерации не является строгой в течение одной секунды. Если несколько систем или несколько процессов или потоков в одной системе генерируют значения за одну секунду; Значения ObjectId не представляют собой строгий порядок вставки. Временное перекос между клиентами также может привести к нестандартному упорядочению даже для значений, поскольку драйверы клиента генерируют значения ObjectId, а не процесс mongod.
Затем я подумал о запросе с меткой времени:
db.tweets.find({ created: { $lt: maxDate } }, { limit: 50 })
Однако нет никакой гарантии, что дата будет уникальной - вполне вероятно, что за одну секунду могут быть созданы два документа. Это означает, что документы могут быть пропущены при пейджинге.
Есть ли какой-либо запрос диапазона, который обеспечит мне большую стабильность?