Какво е MongoDB ObjectId?

MongoDB ObjectId е уникален идентификатор от 12 байта (24 hex символа), използван като стандартно поле _id за всеки документ в MongoDB колекция. Структурата му не е произволна — тя кодира смислена информация. Първите четири байта съхраняват Unix timestamp, представляващ секундата, в която е създаден ObjectId. Останалите байтове съдържат произволна стойност и нарастващ брояч, за да се гарантира уникалност дори когато множество документи се вмъкват в една и съща секунда на една и съща машина.

Тъй като timestamp на създаване е вграден директно в идентификатора, можете да определите точно кога е създаден даден документ, без да съхранявате отделно поле createdAt.

Как е вграден timestamp

ObjectId като 507f1f77bcf86cd799439011 се разбива по следния начин:

Байтове Hex символи Предназначение
1–4 507f1f77 Unix timestamp (секунди от epoch)
5–9 bcf86cd799 Произволна стойност (уникална за машина/процес)
10–12 439011 Нарастващ брояч

Преобразуването на първите осем hex символа 507f1f77 в десетично число дава 1350844279, което съответства на 2012-10-21T21:17:59.000Z.

Описание на инструмента

Този инструмент извлича вградения timestamp от всеки валиден MongoDB ObjectId и го показва в множество формати за дата. Поставете ObjectId и незабавно вижте датата в ISO 8601, UTC дата, локална дата и суров Unix timestamp — без нужда от връзка с база данни или код.

Примери

Входен ObjectId Извлечена дата (UTC)
507f1f77bcf86cd799439011 2012-10-21T21:17:59.000Z
65a1fc2b0000000000000000 2024-01-13T04:44:27.000Z
000000000000000000000000 1970-01-01T00:00:00.000Z

Функции

  • Незабавно извличане: Резултатите се появяват докато пишете — без натискане на бутони
  • Множество формати: Показва ISO 8601, UTC, локална дата/час и Unix timestamp
  • Валидиране на входа: Отхвърля всичко, което не е валиден hex string от 24 символа
  • Без зависимости: Работи изцяло в браузъра без заявки към сървър или външни библиотеки
  • Готов за копиране изход: Всяко изходно поле може да бъде копирано поотделно

Случаи на употреба

  • Дебъгване: Бързо проверете кога е вмъкнат документ, без да правите заявка към базата данни
  • Одит: Проверете timestamp на създаване в експортирани списъци с ObjectId или лог файлове
  • Разследване: Определете възрастта на записи по време на миграция на данни или разследване на инциденти

Как работи

  1. Инструментът взема първите 8 hex символа на ObjectId.
  2. Разпознава ги като 32-битово big-endian шестнадесетично цяло число, за да получи Unix timestamp в секунди.
  3. Умножава по 1000 и го подава на JavaScript обект Date.
  4. Форматира получената дата в ISO 8601, UTC string, локализиран string и суров брой секунди.

Ограничения

  • Извлича се само timestamp на създаване. Произволната и броячната части на ObjectId не се декодират, тъй като не съдържат смислени данни за потребителя.
  • ObjectId, генерирани с персонализиран или нулев timestamp, ще върнат валидна, но потенциално подвеждаща дата.
  • Форматът на локалната дата зависи от езиковите настройки на вашия браузър.

Често задавани въпроси

Мога ли да извлека дата от всеки MongoDB ObjectId? Да. Всеки стандартен MongoDB ObjectId — независимо дали е генериран от MongoDB driver, Mongoose, mongosh или инструменти като Faker.js — съдържа валиден timestamp в първите си четири байта.

Същото ли е като полето createdAt? Само ако ObjectId е генериран при вмъкването (по подразбиране). Ако е предоставен персонализиран ObjectId ръчно, вграденият timestamp може да се различава от действителното време на създаване.

Работи ли това с ObjectId от по-стари версии на MongoDB? Да. 4-байтовият timestamp префикс е част от спецификацията на ObjectId от първоначалното издание на MongoDB. Единствената промяна с времето е в средните байтове (идентификатор на машина срещу произволна стойност), които този инструмент не декодира.