Извличане на дата от MongoDB ObjectId
Извличайте и декодирайте вградения времеви печат от MongoDB ObjectId, за да видите кога е създаден даден документ
Вход
Изход
Прочети ме
Какво е 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 или лог файлове
- Разследване: Определете възрастта на записи по време на миграция на данни или разследване на инциденти
Как работи
- Инструментът взема първите 8 hex символа на ObjectId.
- Разпознава ги като 32-битово big-endian шестнадесетично цяло число, за да получи Unix timestamp в секунди.
- Умножава по 1000 и го подава на JavaScript обект
Date. - Форматира получената дата в 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. Единствената промяна с времето е в средните байтове (идентификатор на машина срещу произволна стойност), които този инструмент не декодира.