MongoDB ObjectId क्या है?

MongoDB ObjectId एक 12-byte (24 hex character) का unique identifier है जिसे MongoDB collection के प्रत्येक document के लिए default _id field के रूप में उपयोग किया जाता है। इसकी संरचना random नहीं है — यह meaningful जानकारी encode करती है। पहले चार bytes एक Unix timestamp संग्रहीत करते हैं जो ObjectId बनाए जाने के second को दर्शाता है। शेष bytes में uniqueness सुनिश्चित करने के लिए एक random value और एक incrementing counter होता है, भले ही एक ही machine पर एक ही second में कई documents insert किए गए हों।

चूँकि creation timestamp सीधे identifier में embedded होती है, आप बिना किसी अलग createdAt field को संग्रहीत किए यह निर्धारित कर सकते हैं कि document कब बनाया गया था।

Timestamp कैसे embedded होती है

507f1f77bcf86cd799439011 जैसा ObjectId इस प्रकार विभाजित होता है:

Bytes Hex Characters उद्देश्य
1–4 507f1f77 Unix timestamp (epoch से seconds)
5–9 bcf86cd799 Random value (प्रति machine/process unique)
10–12 439011 Incrementing counter

पहले आठ hex characters 507f1f77 को decimal में बदलने पर 1350844279 प्राप्त होता है, जो 2012-10-21T21:17:59.000Z के अनुरूप है।

टूल का विवरण

यह टूल किसी भी valid MongoDB ObjectId से embedded timestamp निकालता है और उसे कई date formats में प्रदर्शित करता है। एक ObjectId paste करें और तुरंत ISO 8601 date, UTC date, local date, और raw Unix timestamp देखें — किसी database connection या code की आवश्यकता नहीं।

उदाहरण

Input ObjectId निकाली गई Date (UTC)
507f1f77bcf86cd799439011 2012-10-21T21:17:59.000Z
65a1fc2b0000000000000000 2024-01-13T04:44:27.000Z
000000000000000000000000 1970-01-01T00:00:00.000Z

विशेषताएँ

  • तत्काल निष्कर्षण: टाइप करते समय परिणाम दिखाई देते हैं — किसी button click की आवश्यकता नहीं
  • कई formats: ISO 8601, UTC, local date/time, और Unix timestamp प्रदर्शित करता है
  • Input validation: कोई भी ऐसी चीज़ जो valid 24-character hex string नहीं है, उसे अस्वीकार करता है
  • कोई dependencies नहीं: किसी server call या external libraries के बिना पूरी तरह browser में चलता है
  • Copy के लिए तैयार output: प्रत्येक output field को अलग-अलग copy किया जा सकता है

उपयोग के मामले

  • Debugging: database को query किए बिना जल्दी से जाँचें कि document कब insert किया गया था
  • Auditing: exported ObjectId सूचियों या log files में creation timestamps सत्यापित करें
  • Forensics: data migration या incident investigation के दौरान records की आयु निर्धारित करें

यह कैसे काम करता है

  1. टूल ObjectId के पहले 8 hex characters लेता है।
  2. Unix timestamp को seconds में प्राप्त करने के लिए उन्हें 32-bit big-endian hexadecimal integer के रूप में parse करता है।
  3. 1000 से गुणा करता है और इसे JavaScript Date object को पास करता है।
  4. परिणामी date को ISO 8601, UTC string, locale-aware string, और raw seconds में format करता है।

सीमाएँ

  • केवल creation timestamp निकाली जाती है। ObjectId के random और counter भाग decode नहीं किए जाते क्योंकि वे user के लिए meaningful data नहीं रखते।
  • custom या zero timestamp के साथ generate किए गए ObjectIds एक valid लेकिन संभावित रूप से भ्रामक date लौटाएंगे।
  • local date format आपके browser की locale settings पर निर्भर करता है।

FAQ

क्या मैं किसी भी MongoDB ObjectId से date निकाल सकता हूँ? हाँ। प्रत्येक standard MongoDB ObjectId — चाहे MongoDB driver, Mongoose, mongosh, या Faker.js जैसे टूल्स द्वारा generate किया गया हो — अपने पहले चार bytes में एक valid timestamp रखता है।

क्या यह createdAt field के समान है? केवल तभी जब ObjectId insertion के समय generate किया गया हो (जो default है)। यदि कोई custom ObjectId मैन्युअल रूप से प्रदान किया गया था, तो embedded timestamp वास्तविक creation time से भिन्न हो सकती है।

क्या यह पुराने MongoDB versions के ObjectIds के साथ काम करता है? हाँ। 4-byte timestamp prefix MongoDB की प्रारंभिक release से ObjectId specification का हिस्सा रहा है। समय के साथ केवल middle bytes में बदलाव हुआ है (machine ID बनाम random value), जिसे यह टूल decode नहीं करता।