$dateToString (تنسيق التاريخ)
آخر تحديث: 2026-10-09
$dateToString (تنسيق التاريخ)
يُنسّق $dateToString تاريخًا إلى سلسلة نصية باستخدام نمط تنسيق — وهي الطريقة القياسية لإخراج التواريخ في خطوط أنابيب التجميع. يستخدم النمط عناصر نائبة مثل %Y (السنة) و %m (الشهر) و %d (اليوم) و %H (الساعة)، على غرار دالة strftime. عندما يكون التاريخ فارغًا أو مفقودًا يُرجع null ما لم يوفّر onNull قيمة افتراضية.
| الفئة | التاريخ |
|---|---|
| إصدار MongoDB | 3.0+ |
| لغة المثال | mongosh (الطرفية) |
📝 الصيغة
{ $dateToString: { format: <format>, date: <date-expression>, timezone: <timezone>, onNull: <default> } }
▶ مثال
نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):
// $dateToString: تنسيق تواريخ الطلبات
db.orders.aggregate([
{ $project: {
dateStr: { $dateToString: { format: "%Y-%m-%d", date: "$createdAt" } }
} }
])
المخرجات:
{ "_id": 1, "dateStr": "2026-09-25" }
{ "_id": 2, "dateStr": "2026-09-24" }
📌 ملاحظات
- العناصر النائبة: %Y سنة بأربعة أرقام، %m الشهر، %d اليوم، %H الساعة، %M الدقيقة، %S الثانية
- timezone اختياري وافتراضيته UTC؛ يقبل إزاحات مثل '+08:00' أو مناطق IANA مثل 'Asia/Shanghai'
- عندما يكون التاريخ فارغًا: يُرجع onNull إن كان مضبوطًا، وإلا null
- من MongoDB 6.3+ يُضاف وضع اختصار للتنسيق
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
مزيد من الحالات العملية قريبًا.
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qكيف أحدد المنطقة الزمنية؟
Aاستخدم أسماء IANA (مثل 'Asia/Shanghai') أو إزاحات UTC (مثل '+08:00'). الافتراضي هو UTC.
Qما محددات التنسيق التي يدعمها $dateToString؟
Aمنها الشائعة: %Y (السنة)، %m (الشهر)، %d (اليوم)، %H (الساعة)، %M (الدقيقة)، %S (الثانية)، %L (الميلي ثانية)، %z (إزاحة UTC) و %j (يوم السنة). راجع الوثائق الرسمية للقائمة الكاملة.
Qماذا يحدث إذا لم يكن حقل التاريخ من نوع Date؟
Aيتوقع قيمة Date؛ وإلا يُرجع null أو خطأً (حسب الوضع الصارم). حوّل باستخدام $toDate أولًا إذا لزم الأمر.
Qهل يمكنه إخراج صيغة ISO 8601؟
Aنعم. اجمع %Y-%m-%dT%H:%M:%S.%LZ لإنتاج قيمة مثل 2026-10-01T08:30:00.000Z؛ أو استخدم تعبير $isoDate.