$toDate (التحويل إلى تاريخ)
آخر تحديث: 2026-10-09
$toDate (التحويل إلى تاريخ)
يحوّل $toDate قيمة إلى تاريخ BSON. يمرر التواريخ كما هي، ويعامل الأرقام كطوابع ميلي ثانية، ويحلل سلاسل ISO 8601. الاستخدامات النموذجية: تحويل سلاسل أوقات السجلات إلى تواريخ لتجميع مستوى اليوم أو توحيد طوابع الميلي ثانية القادمة من الواجهات الأمامية. السلاسل غير الصالحة تُسبب خطأً، لذا فضّل $convert مع onError للبيانات الملوّثة. المدخل الفارغ يُرجع null. مقارنةً بـ $dateFromString، صياغة $toDate أبسط وتكتشف تلقائيًا تنسيقات ISO.
| الفئة | المجموعة والشرط والتحويل |
|---|---|
| إصدار MongoDB | 1.0+ |
| لغة المثال | mongosh (الطرفية) |
📝 الصيغة
{ $toDate: <expression> }
⚙️ المعلمات
| تعبير | تاريخ، أو طابع زمني رقمي بالمللي ثانية، أو نص ISO. |
|---|
القيمة المرجعة:Date؛ null عندما يكون الإدخال null
▶ مثال
نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):
// $toDate: تحليل سلسلة وقت إلى تاريخ
db.logs.aggregate([
{ $project: {
ts: { $toDate: '$timeStr' }
} }
])
المخرجات:
{ '_id': 1, 'ts': { '$date': '2026-09-25T08:00:00Z' } }
📌 ملاحظات
- الأرقام طوابع ميلي ثانية؛ وطوابع مستوى الثواني تحتاج ضربًا في 1000 أولًا
- السلاسل غير ISO (مثل '2026/09/25') تُسبب خطأً
- المدخل الفارغ يُرجع null
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
مزيد من الحالات العملية قريبًا.
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qأي السلاسل يمكنه تحليلها؟
Aتنسيقات ISO 8601، مثل '2026-09-25T08:00:00Z'.
Qماذا عن طوابع مستوى الثواني؟
Aاضرب في 1000 أولًا: { $multiply: ['$ts', 1000] }، ثم حوّل.
Qكيف يختلف عن $dateFromString؟
A$toDate يكتشف تلقائيًا تنسيقات ISO؛ و $dateFromString يخصّص التنسيق والمنطقة.