Декодер ObjectId и ObjectId по дате

Вставьте ObjectId — идентификатор из 24 символов, который MongoDB записывает в _id, — и узнайте, когда он создан и что хранят его остальные части. Во втором блоке введите дату: получится наименьший ObjectId этой секунды, готовый для запроса документов, созданных после неё.

Расшифровать ObjectId

Создан (UTC)2012-10-17T21:13:27Z
Unix-время, с
1350508407
Случайное значение (5 байт)
bcf86cd799
Счётчик (3 байта)
4427793 (0x439011)

ObjectId по дате

2026-01-01, 2026-01-01T12:30:00Z, с +03:00 для часового пояса, или секунды Unix; без пояса — UTC
ObjectId6955b9000000000000000000
Секунда (UTC)
2026-01-01T00:00:00Z
Запрос документов, созданных с этого момента
{ _id: { $gte: ObjectId("6955b9000000000000000000") } }

Работает в браузере: всё, что вы вводите, никуда не отправляется.

Как пользоваться

  1. Вставьте ObjectId в первое поле. Ниже появятся время создания, секунды Unix, случайное значение и счётчик.
  2. Для обратного направления введите дату во втором блоке: получите ObjectId и готовый запрос по _id.
  3. Скопируйте нужное кнопками копирования.

Как это работает

Первые 8 шестнадцатеричных цифр — время создания в секундах с 1970-01-01 UTC, старшим байтом вперёд. Следующие 10 цифр — случайное значение процесса, последние 6 — счётчик.

Для даты инструмент берёт её секунды Unix (доли отбрасываются), записывает их 8 шестнадцатеричными цифрами и добавляет 16 нулей. Ни один настоящий идентификатор этой секунды не меньше, поэтому он подходит как граница диапазона.

Пример

507f1f77bcf86cd799439011:

  • 507f1f77 в десятичной записи — 1 350 508 407 секунд, то есть 2012-10-17T21:13:27Z;
  • bcf86cd799 — случайное значение;
  • 439011 — счётчик: 4 427 793 в десятичной записи.

В обратную сторону: 2026-01-01T00:00:00Z — это 1 767 225 600 секунд = 6955b900 в шестнадцатеричной записи, значит, ObjectId — 6955b9000000000000000000.

Советы

  • Сортировка по _id — это примерно сортировка по времени создания, но только до секунды; идентификаторы разных процессов в одну секунду по времени не упорядочены.
  • Чтобы прочитать время в коде, в mongosh есть ObjectId("…").getTimestamp().
  • Для UUID есть декодер UUID, для идентификаторов Twitter и Discord — декодер Snowflake ID.

Частые вопросы

Что внутри ObjectId?

12 байт, записанных 24 шестнадцатеричными цифрами: 4 байта Unix-времени в секундах, 5 байт случайного значения, выбранного один раз на процесс, и 3-байтовый счётчик, который начинается со случайного числа и растёт на единицу с каждым новым идентификатором.

Время создания точное?

С точностью до секунды и по часам той машины или драйвера, которые создали идентификатор. Обычно ObjectId создаёт клиентский драйвер, так что это часы клиента, а не сервера базы данных.

Как найти документы, созданные после даты?

Возьмите ObjectId этой даты как нижнюю границу: db.orders.find({ _id: { $gte: ObjectId("…") } }). Время стоит в начале, поэтому ObjectId сортируются по секунде создания, а созданный по дате идентификатор (время и 16 нулей) — наименьший в этой секунде.

Можно ли узнать по ObjectId компьютер или процесс?

Уже нет. В старых версиях формата были идентификаторы машины и процесса, в нынешней — случайное 5-байтовое значение на процесс, по которому видно только, пришли ли два идентификатора, скорее всего, из одного процесса.

Можно вставить ObjectId("…")?

Да, обёртка ObjectId("…") из консоли убирается, регистр букв не важен.

Ещё в разделе «Разработчикам»

Все инструменты раздела: Разработчикам ·Обновлено 4 ноября 2026 г.

Настройки конфиденциальности

Google Analytics показывает нам, какими инструментами пользуются и работают ли они. Он может ставить cookie. Ваш выбор сохраняется в этом браузере.