$dateFromString (تحليل سلسلة إلى تاريخ)
آخر تحديث: 2026-10-09
$dateFromString (تحليل سلسلة إلى تاريخ)
يحلل $dateFromString سلسلة نصية إلى تاريخ باستخدام تنسيق معين — وهو عكس $dateToString، ومفيد لتحويل سلاسل التواريخ المستوردة أو من الواجهات الأمامية إلى تواريخ BSON. يستخدم format نفس العناصر النائبة كـ $dateToString (%Y و %m و %d...)؛ وبدونه يُفترض ISO 8601. يوفّر onError قيمة بديلة عند فشل التحليل، و onNull عندما يكون المدخل فارغًا. تحدد timezone المنطقة المطبقة عندما لا تحمل السلسلة معلومات منطقة.
| الفئة | التاريخ |
|---|---|
| إصدار MongoDB | 1.0+ |
| لغة المثال | mongosh (الطرفية) |
📝 الصيغة
{ $dateFromString: { dateString: <string>, format: <format>, timezone: <timezone>, onError: <default>, onNull: <default> } }
⚙️ المعلمات
| dateString | مطلوب؛ نص التاريخ المراد تحليله. |
|---|---|
| format | نمط التنسيق اختياري؛ الافتراضي هو ISO 8601. |
| timezone | المنطقة الزمنية اختيارية تُطبَّق عندما يفتقر النص إلى معلومات المنطقة الزمنية. |
| onError / onNull | قيم احتياطية اختيارية لفشل التحليل والإدخال null. |
القيمة المرجعة:BSON Date المُحلَّل؛ onError عند الفشل (يرمي خطأً افتراضيًا)، وonNull للإدخال null (null افتراضيًا).
▶ مثال
نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):
// $dateFromString: تحليل طوابع سجلات مستوردة (توقيت بكين)
db.imports.aggregate([
{ $project: {
createdAt: { $dateFromString: { dateString: '$ts', format: '%Y-%m-%d %H:%M', timezone: 'Asia/Shanghai' } }
} }
])
المخرجات:
{ "_id": 1, "createdAt": ISODate("2026-09-25T08:30:00Z") }
{ "_id": 2, "createdAt": ISODate("2026-09-25T09:00:00Z") }
📌 ملاحظات
- بدون format يُفترض ISO 8601؛ عناصر مثل %z تحلل إزاحات المنطقة
- فشل التحليل يُسبب خطأً افتراضيًا — اضبط onError دائمًا في الإنتاج
- السلاسل دون معلومات منطقة تتبع timezone، التي تُعرّف افتراضيًا على UTC
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qكيف أحلل سلاسل ذات تنسيقات مختلفة؟
Aبدون format يُجرَّب ISO 8601؛ وعندما يكون التنسيق ثابتًا مرّر format صراحةً.
Qهل يُسبب فشل التحليل خطأً؟
Aنعم، ما لم يوفّر onError قيمة بديلة.
Qكيف يختلف عن $toDate؟
A$toDate تحويل أنواع فضفاض؛ بينما $dateFromString يتحكم في التنسيق والمنطقة بدقة.