Генерируется ли MongoDB id (ObjectId) в порядке возрастания?

Я знаю, как столбец _id содержит представление метки времени, когда документ был вставлен в коллекцию. вот онлайн-утилита для преобразования его в метку времени:http://steveridout.github.io/mongo-object-time/

Мне интересно, гарантирует ли сама строка идентификатора объекта поддержание восходящего порядка или нет? т. е. всегда ли это сравнение возвращает true?

"newest object id" > "second newest object id"

2 ответов


нет, нет никакой гарантии. От официальная документация:

связь между порядком значений ObjectId и временем генерации не является строгой в течение одной секунды. Если несколько систем или несколько процессов или потоков в одной системе генерируют значения в течение одной секунды;значения ObjectId не представляют строгий порядок вставки. Перекос часов между клиентами может также привести к в non-strict приказывать даже для значений, поскольку клиентские драйверы генерируют значения ObjectId, а не процесс mongod.


_id: ObjectId (метка времени 4 байта, id машины 3 байта, id процесса 2 байта, инкремент 3 байта)

Это структура id. Таким образом, только последние 3 байта будут увеличиваться однозначно. Так что ответ на ваш вопрос-да.