$hour (الحصول على الساعة)
آخر تحديث: 2026-10-09
$hour (الحصول على الساعة)
يُرجع $hour جزء الساعة من تاريخ ما (0 إلى 23) — شائع لتحليل حركة المرور بالساعات، نوافذ التنبيه، أو التقارير الساعية. يُرجع عددًا صحيحًا بصيغة 24 ساعة. timezone هي الأهم هنا: UTC زائد 8 ساعات يعطي توقيت بكين، لذا يجب أن يضبط التحليل متعدد المناطق timezone صراحةً وإلا انزاحت كل دلو. الافتراضي UTC.
| الفئة | التاريخ |
|---|---|
| إصدار MongoDB | 1.0+ |
| لغة المثال | mongosh (الطرفية) |
📝 الصيغة
{ $hour: { date: <date-expression>, timezone: <timezone> } }
⚙️ المعلمات
| date | مطلوب؛ تعبير التاريخ. |
|---|---|
| timezone | المنطقة الزمنية اختيارية؛ الافتراضي هو UTC. |
القيمة المرجعة:الساعة (0-23)؛ null إذا كان date يساوي null.
▶ مثال
نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):
// $hour: الزيارات حسب الساعة (توقيت بكين)
db.visits.aggregate([
{ $group: {
_id: { $hour: { date: '$visitAt', timezone: 'Asia/Shanghai' } },
pv: { $sum: 1 }
} }
])
المخرجات:
{ "_id": 9, "pv": 2300 }
{ "_id": 10, "pv": 3100 }
📌 ملاحظات
- صيغة 24 ساعة، النطاق من 0 إلى 23
- تزيح timezone الساعات كاملة: عند الساعة 8 في UTC+8، لا تزال UTC عند 0
- لدلالات الأعمال مثل «أي ساعة»، مرّر timezone دائمًا
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
مزيد من الحالات العملية قريبًا.
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qما النطاق؟
Aمن 0 إلى 23، بصيغة 24 ساعة.
Qلماذا بياناتي الساعية منزاحة؟
Aغالبًا بسبب المنطقة الزمنية — مرّر منطقة محلية مثل 'Asia/Shanghai'.
Qهل يمكنني إخراج ساعات من رقمين مثل 09؟
Aاستخدم العنصر النائب %H من $dateToString.