Ekstraktor daty MongoDB ObjectId
Wyodrębnij i zdekoduj osadzony znacznik czasu z MongoDB ObjectId, aby sprawdzić, kiedy dokument został utworzony
Wejście
Wyjście
Instrukcja
Czym jest MongoDB ObjectId?
MongoDB ObjectId to 12-bajtowy (24 znaki szesnastkowe) unikalny identyfikator używany jako domyślne pole _id dla każdego dokumentu w kolekcji MongoDB. Jego struktura nie jest losowa — koduje znaczące informacje. Pierwsze cztery bajty przechowują znacznik czasu Unix reprezentujący sekundę, w której ObjectId został utworzony. Pozostałe bajty zawierają losową wartość oraz inkrementowany licznik, gwarantując unikalność nawet gdy wiele dokumentów jest wstawianych w tej samej sekundzie na tej samej maszynie.
Ponieważ znacznik czasu utworzenia jest bezpośrednio wbudowany w identyfikator, można dokładnie określić, kiedy dokument został utworzony, bez konieczności przechowywania osobnego pola createdAt.
Jak osadzony jest znacznik czasu
ObjectId taki jak 507f1f77bcf86cd799439011 dzieli się następująco:
| Bajty | Znaki szesnastkowe | Przeznaczenie |
|---|---|---|
| 1–4 | 507f1f77 |
Znacznik czasu Unix (sekundy od epoki) |
| 5–9 | bcf86cd799 |
Losowa wartość (unikalna dla maszyny/procesu) |
| 10–12 | 439011 |
Inkrementowany licznik |
Konwersja pierwszych ośmiu znaków szesnastkowych 507f1f77 na liczbę dziesiętną daje 1350844279, co odpowiada 2012-10-21T21:17:59.000Z.
Opis narzędzia
To narzędzie wyodrębnia osadzony znacznik czasu z dowolnego prawidłowego MongoDB ObjectId i wyświetla go w wielu formatach daty. Wklej ObjectId i natychmiast zobacz datę w formacie ISO 8601, datę UTC, datę lokalną oraz surowy znacznik czasu Unix — bez połączenia z bazą danych ani pisania kodu.
Przykłady
| Wejściowy ObjectId | Wyodrębniona data (UTC) |
|---|---|
507f1f77bcf86cd799439011 |
2012-10-21T21:17:59.000Z |
65a1fc2b0000000000000000 |
2024-01-13T04:44:27.000Z |
000000000000000000000000 |
1970-01-01T00:00:00.000Z |
Funkcje
- Natychmiastowe wyodrębnianie: Wyniki pojawiają się podczas wpisywania — bez klikania przycisków
- Wiele formatów: Wyświetla ISO 8601, UTC, lokalną datę/godzinę oraz znacznik czasu Unix
- Walidacja danych wejściowych: Odrzuca wszystko, co nie jest prawidłowym 24-znakowym ciągiem szesnastkowym
- Brak zależności: Działa w całości w przeglądarce bez wywołań serwera ani zewnętrznych bibliotek
- Gotowe do skopiowania wyjście: Każde pole wyjściowe można skopiować osobno
Przypadki użycia
- Debugowanie: Szybkie sprawdzenie, kiedy dokument został wstawiony, bez odpytywania bazy danych
- Audyt: Weryfikacja znaczników czasu utworzenia w wyeksportowanych listach ObjectId lub plikach dziennika
- Analiza forensyczna: Określanie wieku rekordów podczas migracji danych lub analizy incydentów
Jak to działa
- Narzędzie pobiera pierwsze 8 znaków szesnastkowych ObjectId.
- Interpretuje je jako 32-bitową liczbę całkowitą szesnastkową big-endian, aby uzyskać znacznik czasu Unix w sekundach.
- Mnoży przez 1000 i przekazuje do obiektu JavaScript
Date. - Formatuje wynikową datę do postaci ISO 8601, ciągu UTC, ciągu uwzględniającego ustawienia regionalne oraz surowych sekund.
Ograniczenia
- Wyodrębniany jest wyłącznie znacznik czasu utworzenia. Losowa część i część licznika ObjectId nie są dekodowane, ponieważ nie zawierają danych istotnych dla użytkownika.
- ObjectId wygenerowane z niestandardowym lub zerowym znacznikiem czasu zwrócą prawidłową, lecz potencjalnie mylącą datę.
- Format daty lokalnej zależy od ustawień regionalnych przeglądarki.
FAQ
Czy mogę wyodrębnić datę z dowolnego MongoDB ObjectId?
Tak. Każdy standardowy MongoDB ObjectId — niezależnie od tego, czy został wygenerowany przez driver MongoDB, Mongoose, mongosh, czy narzędzia takie jak Faker.js — zawiera prawidłowy znacznik czasu w pierwszych czterech bajtach.
Czy to jest to samo co pole createdAt?
Tylko jeśli ObjectId został wygenerowany w momencie wstawiania (domyślne zachowanie). Jeśli niestandardowy ObjectId został podany ręcznie, osadzony znacznik czasu może różnić się od rzeczywistego czasu utworzenia.
Czy to działa z ObjectId ze starszych wersji MongoDB? Tak. 4-bajtowy prefiks znacznika czasu jest częścią specyfikacji ObjectId od pierwszego wydania MongoDB. Jedyną zmianą na przestrzeni czasu były środkowe bajty (identyfikator maszyny vs. losowa wartość), które to narzędzie nie dekoduje.