$dateFromString (تحليل سلسلة إلى تاريخ)

آخر تحديث: 2026-10-09

$dateFromString (تحليل سلسلة إلى تاريخ)

يحلل $dateFromString سلسلة نصية إلى تاريخ باستخدام تنسيق معين — وهو عكس $dateToString، ومفيد لتحويل سلاسل التواريخ المستوردة أو من الواجهات الأمامية إلى تواريخ BSON. يستخدم format نفس العناصر النائبة كـ $dateToString (%Y و %m و %d...)؛ وبدونه يُفترض ISO 8601. يوفّر onError قيمة بديلة عند فشل التحليل، و onNull عندما يكون المدخل فارغًا. تحدد timezone المنطقة المطبقة عندما لا تحمل السلسلة معلومات منطقة.

الفئةالتاريخ
إصدار MongoDB1.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") }

📌 ملاحظات

📚 دروس ذات صلة

❓ الأسئلة الشائعة

Qكيف أحلل سلاسل ذات تنسيقات مختلفة؟
Aبدون format يُجرَّب ISO 8601؛ وعندما يكون التنسيق ثابتًا مرّر format صراحةً.
Qهل يُسبب فشل التحليل خطأً؟
Aنعم، ما لم يوفّر onError قيمة بديلة.
Qكيف يختلف عن $toDate؟
A$toDate تحويل أنواع فضفاض؛ بينما $dateFromString يتحكم في التنسيق والمنطقة بدقة.
Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%