Εξαγωγέας Ημερομηνίας MongoDB ObjectId
Εξαγωγή και αποκωδικοποίηση της ενσωματωμένης χρονικής σήμανσης από ένα MongoDB ObjectId για να δείτε πότε δημιουργήθηκε ένα έγγραφο
Είσοδος
Έξοδος
Readme
Τι είναι ένα MongoDB ObjectId;
Ένα MongoDB ObjectId είναι ένα μοναδικό αναγνωριστικό 12 bytes (24 χαρακτήρες hex) που χρησιμοποιείται ως το προεπιλεγμένο πεδίο _id για κάθε έγγραφο σε μια συλλογή MongoDB. Η δομή του δεν είναι τυχαία — κωδικοποιεί ουσιαστικές πληροφορίες. Τα πρώτα τέσσερα bytes αποθηκεύουν ένα Unix timestamp που αντιπροσωπεύει το δευτερόλεπτο δημιουργίας του ObjectId. Τα υπόλοιπα bytes περιέχουν μια τυχαία τιμή και έναν αυξανόμενο μετρητή για να εγγυηθούν τη μοναδικότητα ακόμα και όταν πολλά έγγραφα εισάγονται στο ίδιο δευτερόλεπτο στο ίδιο μηχάνημα.
Επειδή το timestamp δημιουργίας είναι ενσωματωμένο απευθείας στο αναγνωριστικό, μπορείτε να προσδιορίσετε ακριβώς πότε δημιουργήθηκε ένα έγγραφο χωρίς να αποθηκεύετε ξεχωριστό πεδίο createdAt.
Πώς ενσωματώνεται το timestamp
Ένα ObjectId όπως το 507f1f77bcf86cd799439011 αναλύεται ως εξής:
| Bytes | Χαρακτήρες Hex | Σκοπός |
|---|---|---|
| 1–4 | 507f1f77 |
Unix timestamp (δευτερόλεπτα από την αρχή της εποχής) |
| 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
- Επικύρωση εισόδου: Απορρίπτει οτιδήποτε δεν είναι έγκυρο string hex 24 χαρακτήρων
- Χωρίς εξαρτήσεις: Εκτελείται εξ ολοκλήρου στον browser χωρίς κλήσεις σε server ή εξωτερικές βιβλιοθήκες
- Έτοιμη αντιγραφή εξόδου: Κάθε πεδίο εξόδου μπορεί να αντιγραφεί ξεχωριστά
Περιπτώσεις χρήσης
- Αποσφαλμάτωση: Ελέγξτε γρήγορα πότε εισήχθη ένα έγγραφο χωρίς να κάνετε ερώτημα στη βάση δεδομένων
- Έλεγχος: Επαληθεύστε τα timestamps δημιουργίας σε εξαγόμενες λίστες ObjectId ή αρχεία καταγραφής
- Ανάλυση δεδομένων: Προσδιορίστε την ηλικία εγγραφών κατά τη μετεγκατάσταση δεδομένων ή την έρευνα περιστατικών
Πώς λειτουργεί
- Το εργαλείο λαμβάνει τους πρώτους 8 χαρακτήρες hex του ObjectId.
- Τους αναλύει ως ακέραιο αριθμό hexadecimal 32-bit big-endian για να λάβει το Unix timestamp σε δευτερόλεπτα.
- Πολλαπλασιάζει επί 1000 και το περνά σε ένα αντικείμενο JavaScript
Date. - Μορφοποιεί την προκύπτουσα ημερομηνία σε ISO 8601, string UTC, string με υποστήριξη locale και ακατέργαστα δευτερόλεπτα.
Περιορισμοί
- Εξάγεται μόνο το timestamp δημιουργίας. Τα τμήματα τυχαίας τιμής και μετρητή του ObjectId δεν αποκωδικοποιούνται καθώς δεν περιέχουν δεδομένα με νόημα για τον χρήστη.
- Τα ObjectId που δημιουργήθηκαν με προσαρμοσμένο ή μηδενικό timestamp θα επιστρέψουν έγκυρη αλλά ενδεχομένως παραπλανητική ημερομηνία.
- Η μορφή τοπικής ημερομηνίας εξαρτάται από τις ρυθμίσεις locale του browser σας.
Συχνές ερωτήσεις
Μπορώ να εξάγω ημερομηνία από οποιοδήποτε MongoDB ObjectId;
Ναι. Κάθε τυπικό MongoDB ObjectId — είτε δημιουργήθηκε από το MongoDB driver, το Mongoose, το mongosh ή εργαλεία όπως το Faker.js — περιέχει έγκυρο timestamp στα πρώτα τέσσερα bytes του.
Είναι το ίδιο με το πεδίο createdAt;
Μόνο εάν το ObjectId δημιουργήθηκε κατά την εισαγωγή (η προεπιλογή). Εάν παρασχέθηκε χειροκίνητα ένα προσαρμοσμένο ObjectId, το ενσωματωμένο timestamp ενδέχεται να διαφέρει από τον πραγματικό χρόνο δημιουργίας.
Λειτουργεί με ObjectId από παλαιότερες εκδόσεις MongoDB; Ναι. Το πρόθεμα timestamp 4 bytes αποτελεί μέρος της προδιαγραφής ObjectId από την αρχική κυκλοφορία του MongoDB. Η μόνη αλλαγή με την πάροδο του χρόνου αφορά τα μεσαία bytes (αναγνωριστικό μηχανήματος έναντι τυχαίας τιμής), τα οποία αυτό το εργαλείο δεν αποκωδικοποιεί.