مستخرج تاريخ MongoDB ObjectId
استخراج وفك تشفير الطابع الزمني المضمّن في MongoDB ObjectId لمعرفة وقت إنشاء المستند
الإدخال
الإخراج
ملف القراءة
ما هو MongoDB ObjectId؟
MongoDB ObjectId هو معرّف فريد مكوّن من 12 بايت (24 حرفًا سداسيًا عشريًا)، يُستخدم كحقل _id الافتراضي لكل مستند في مجموعة MongoDB. بنيته ليست عشوائية — بل تُشفّر معلومات ذات معنى. تخزّن البايتات الأربع الأولى طابعًا زمنيًا بتنسيق Unix يمثّل الثانية التي أُنشئ فيها ObjectId. أما البايتات المتبقية فتحتوي على قيمة عشوائية وعدّاد تصاعدي لضمان التفرّد حتى عند إدراج مستندات متعددة في الثانية ذاتها على الجهاز نفسه.
نظرًا لأن طابع وقت الإنشاء مضمّن مباشرةً داخل المعرّف، يمكنك تحديد وقت إنشاء المستند بدقة دون الحاجة إلى تخزين حقل createdAt منفصل.
كيف يُضمَّن الطابع الزمني
يتوزّع ObjectId مثل 507f1f77bcf86cd799439011 على النحو التالي:
| البايتات | الأحرف السداسية العشرية | الغرض |
|---|---|---|
| 1–4 | 507f1f77 |
طابع زمني Unix (الثواني منذ بداية الحقبة) |
| 5–9 | bcf86cd799 |
قيمة عشوائية (فريدة لكل جهاز/عملية) |
| 10–12 | 439011 |
عدّاد تصاعدي |
تحويل أول ثمانية أحرف سداسية عشرية 507f1f77 إلى نظام العشري يُعطي 1350844279، وهو ما يقابل 2012-10-21T21:17:59.000Z.
وصف الأداة
تستخرج هذه الأداة الطابع الزمني المضمّن من أي MongoDB ObjectId صالح وتعرضه بصيغ تاريخ متعددة. الصق ObjectId وشاهد على الفور تاريخ ISO 8601، وتاريخ UTC، والتاريخ المحلي، والطابع الزمني الخام بتنسيق Unix — دون الحاجة إلى اتصال بقاعدة البيانات أو كتابة أي كود.
أمثلة
| 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
- التحقق من المدخلات: يرفض أي إدخال لا يمثّل string سداسيًا عشريًا صالحًا مكوّنًا من 24 حرفًا
- لا تبعيات: يعمل بالكامل في المتصفح دون أي طلبات إلى الخادم أو مكتبات خارجية
- مخرجات جاهزة للنسخ: يمكن نسخ كل حقل من حقول المخرجات بشكل مستقل
حالات الاستخدام
- التصحيح (Debugging): التحقق السريع من وقت إدراج مستند دون الاستعلام من قاعدة البيانات
- المراجعة والتدقيق: التحقق من طوابع وقت الإنشاء في قوائم ObjectId المُصدَّرة أو ملفات السجلات
- التحليل الجنائي للبيانات: تحديد عمر السجلات أثناء ترحيل البيانات أو التحقيق في الحوادث
كيف تعمل الأداة
- تأخذ الأداة أول 8 أحرف سداسية عشرية من ObjectId.
- تُحلّلها كعدد صحيح سداسي عشري بتنسيق big-endian بحجم 32 بت للحصول على الطابع الزمني Unix بالثواني.
- تضربه في 1000 وتمرّره إلى كائن JavaScript
Date. - تُنسّق التاريخ الناتج إلى صيغ ISO 8601، وstring بتنسيق UTC، وstring مراعٍ للإعدادات المحلية، وعدد الثواني الخام.
القيود
- يُستخرج طابع وقت الإنشاء فقط. لا يتم فكّ تشفير الأجزاء العشوائية وأجزاء العدّاد من ObjectId لأنها لا تحمل بيانات ذات معنى للمستخدم.
- ستُعيد ObjectIds المُنشأة بطابع زمني مخصص أو صفري تاريخًا صالحًا لكنه قد يكون مضلِّلًا.
- يعتمد تنسيق التاريخ المحلي على إعدادات اللغة والمنطقة في متصفحك.
الأسئلة الشائعة
هل يمكنني استخراج تاريخ من أي MongoDB ObjectId؟
نعم. كل MongoDB ObjectId قياسي — سواء أُنشئ بواسطة MongoDB driver، أو Mongoose، أو mongosh، أو أدوات مثل Faker.js — يحتوي على طابع زمني صالح في بايتاته الأربع الأولى.
هل هذا مطابق لحقل createdAt؟
فقط إذا أُنشئ ObjectId عند وقت الإدراج (وهو السلوك الافتراضي). إذا تم تزويد ObjectId مخصص يدويًا، فقد يختلف الطابع الزمني المضمّن عن وقت الإنشاء الفعلي.
هل تعمل الأداة مع ObjectIds من إصدارات MongoDB القديمة؟ نعم. بادئة الطابع الزمني المكوّنة من 4 بايتات كانت جزءًا من مواصفات ObjectId منذ الإصدار الأول لـ MongoDB. التغيير الوحيد عبر الزمن كان في البايتات الوسطى (معرّف الجهاز مقابل القيمة العشوائية)، وهو ما لا تقوم هذه الأداة بفكّ تشفيره.