$dateFromParts (إنشاء تاريخ من الأجزاء)
آخر تحديث: 2026-10-09
$dateFromParts (إنشاء تاريخ من الأجزاء)
يبني $dateFromParts تاريخًا من أجزاء رقمية مثل السنة والشهر واليوم والساعة والدقيقة والثانية والميلي ثانية — وهو عكس $dateToParts. له وضعان: حقول التقويم (السنة والشهر واليوم...) أو حقول أسبوع ISO 8601 (isoWeekYear و isoWeek و isoDayOfWeek). تأخذ الحقول غير المحددة قيمتها الدنيا (الشهر الافتراضي 1، الساعة 0). مفيد لإعادة بناء التواريخ من مكونات مخزنة أو بناء حدود النطاقات. تحدد timezone منطقة التاريخ الناتج وتُعرّف افتراضيًا على UTC.
| الفئة | التاريخ |
|---|---|
| إصدار MongoDB | 1.0+ |
| لغة المثال | mongosh (الطرفية) |
📝 الصيغة
{ $dateFromParts: { year: <number>, month: <number>, day: <number>, hour: <number>, minute: <number>, second: <number>, millisecond: <number>, timezone: <timezone> } }
⚙️ المعلمات
| year | مطلوب؛ year في الوضع التقويمي، أو isoWeekYear في وضع ISO. |
|---|---|
| month / isoWeek | الشهر (الافتراضي 1) أو أسبوع ISO؛ استخدم حقول وضع واحد فقط. |
| day / isoDayOfWeek | اليوم (الافتراضي 1) أو يوم الأسبوع بمعيار ISO. |
| hour/minute/second/millisecond | اختياري؛ الافتراضي 0. |
| timezone | المنطقة الزمنية اختيارية للتاريخ المُنشأ. |
القيمة المرجعة:BSON Date المُنشأ؛ null إذا كان year مفقودًا.
▶ مثال
نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):
// $dateFromParts: إعادة بناء وقت الحدث من الأجزاء (توقيت بكين)
db.events.aggregate([
{ $project: {
startedAt: { $dateFromParts: { year: '$y', month: '$m', day: '$d', timezone: 'Asia/Shanghai' } }
} }
])
المخرجات:
{ "_id": 1, "startedAt": ISODate("2026-09-25T00:00:00Z") }
{ "_id": 2, "startedAt": ISODate("2026-10-01T00:00:00Z") }
📌 ملاحظات
- الوضع ISO يستخدم isoWeekYear/isoWeek/isoDayOfWeek؛ لا تخلطها مع year/month/day أبدًا
- القيم خارج النطاق تُسبب خطأً (مثل الشهر 13) — تحقق من المدخل أولًا
- تؤثر timezone في النتيجة؛ الافتراضي هو UTC
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
مزيد من الحالات العملية قريبًا.
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qهل يمكنني بناء تاريخ من السنة فقط؟
Aنعم — الشهر الافتراضي 1 واليوم 1 وأجزاء الوقت 0.
Qهل يمكن خلط حقول التقويم وحقول ISO؟
Aلا — حقول التقويم وحقول ISO متنافية؛ والخلط يُسبب خطأً.
Qهل تُسبب القيم خارج النطاق خطأً؟
Aنعم، مثل الشهر 13 أو اليوم 32 تُسبب خطأً — تحقق قبل الإرسال.