استخراج التاريخ من MongoDB ObjectId
ألصق قيمة _id من مستند MongoDB لتعرف متى أنشئ، دون الحاجة إلى حقل createdAt أو تشغيل getTimestamp() في الطرفية.
جارٍ تحميل الأداة…
المعالجة والخصوصية: تُحسب النتيجة داخل متصفحك ولا تُرسل بياناتك إلى أي خادم.
طريقة الاستخدام
- أدخل قيمة ObjectId والمنطقة الزمنية (اختياري).
- تظهر النتيجة فورًا وتتحدّث مع كل تعديل.
- انسخ النتيجة، أو انسخ رابطًا يحفظ القيم نفسها لمشاركتها.
طريقة الحساب
أول 4 بايتات (8 خانات ست عشرية) عدد صحيح بترتيب big-endian يساوي ثواني Unix منذ 1970-01-01 UTC. البايتات 5 إلى 9 قيمة عشوائية، وآخر 3 بايتات عداد.
مثال
المدخلات: قيمة ObjectId = 507f1f77bcf86cd799439011، المنطقة الزمنية (اختياري) = دبي (الإمارات). النتيجة: التاريخ والوقت (UTC): 2012-10-17 21:13:27، اليوم: الأربعاء، العداد: 4,427,793.
507f1f77bcf86cd799439011
2012-10-17 21:13:27
الحدود والملاحظات
- الوقت بدقة الثانية فقط، ويأتي من ساعة الجهاز أو برنامج التشغيل الذي أنشأ المعرّف، فقد ينحرف إذا كانت ساعته غير مضبوطة.
- إذا أنشأ التطبيق قيمة _id بنفسه أو استخدم نوعا غير ObjectId فلا يدل الرقم على تاريخ الإنشاء.
- في المعرّفات القديمة قبل MongoDB 3.4 تمثل البايتات الوسطى رقم الجهاز والعملية لا قيمة عشوائية.
أسئلة شائعة عن هذه الأداة
هل يحتوي ObjectId على تاريخ الإنشاء فعلا؟
نعم، أول 8 خانات منه هي عدد الثواني منذ 1970 بالست عشري، ولهذا يعطي أمر getTimestamp() في MongoDB التاريخ نفسه.
كيف أبحث عن المستندات التي أنشئت بعد تاريخ معين؟
استخدم أصغر ObjectId في تلك الثانية، الظاهر في النتائج، في استعلام مثل { _id: { $gte: ObjectId("507f1f770000000000000000") } }.
هل يمكن الاعتماد على الترتيب حسب _id كترتيب زمني؟
تقريبا فقط. المعرّفات في الثانية نفسها أو من أجهزة مختلفة قد لا تكون مرتبة بدقة حسب لحظة الإنشاء.
