$dateTrunc (اقتطاع التاريخ)

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

$dateTrunc (اقتطاع التاريخ)

يقتطع $dateTrunc تاريخًا إلى بداية وحدة معينة ويعيد التاريخ الجديد — مثالي لمحاذاة الطوابع الزمنية في دلاء ساعات/أيام/أشهر للإحصاءات. تدعم وحدة (unit) السنة والربع والشهر والأسبوع واليوم والساعة والدقيقة والثانية؛ وتوسّع binSize الدلو (مثل دلاء 3 ساعات). تُطبّق startOfWeek على الأسبوع فقط. تحدد timezone التقويم المستخدم للاقتطاع — اضبطها صراحةً عبر المناطق. طُوّر في MongoDB 5.0.

الفئةالتاريخ
إصدار MongoDB5.0+
لغة المثالmongosh (الطرفية)

📝 الصيغة

{ $dateTrunc: { date: <date-expression>, unit: <unit>, binSize: <number>, timezone: <timezone>, startOfWeek: <week-start> } }

⚙️ المعلمات

dateمطلوب؛ التاريخ المراد اقتطاعه.
unitمطلوب؛ وحدة الاقتطاع: ‏year أو quarter أو month أو week أو day أو hour أو minute أو second.
binSizeحجم حاوية (bucket) اختياري يوسّع الوحدة.
timezoneالمنطقة الزمنية اختيارية للاقتطاع.
startOfWeekاختياري؛ يُطبَّق فقط عندما تكون unit هي week.

القيمة المرجعة:التاريخ المقتطع (BSON Date)؛ null إذا كان date يساوي null أو مفقودًا.

▶ مثال

نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):

// $dateTrunc: تجميع المبيعات بالساعات
db.sales.aggregate([
  { $group: {
      _id: { $dateTrunc: { date: '$soldAt', unit: 'hour' } },
      total: { $sum: '$amount' }
  } }
])

المخرجات:

{ "_id": ISODate("2026-09-25T08:00:00Z"), "total": 1250 }
{ "_id": ISODate("2026-09-25T09:00:00Z"), "total": 980 }

📌 ملاحظات

مزيد من الحالات العملية قريبًا.

📚 دروس ذات صلة

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

Qكيف يختلف هذا عن $dateAdd؟
Aيقوم $dateTrunc بالمحاذاة إلى بداية وحدة فقط؛ بينما $dateAdd يحرّك الوقت.
Qماذا تعني binSize؟
Aتوسّع الوحدة إلى دلاء — binSize 3 مع وحدة الساعة يعطي دلاء 3 ساعات.
Qما هو وقت النتيجة؟
Aاليوم يعطي 00:00 من ذلك اليوم؛ والساعة تعطي رأس الساعة.
Web-Tutorial.com

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

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

100%