Генерируется ли 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 байта будут увеличиваться однозначно. Так что ответ на ваш вопрос-да.