$convert (تحويل الأنواع)
آخر تحديث: 2026-10-09
$convert (تحويل الأنواع)
يحوّل $convert قيمة إلى نوع BSON مستهدف وهو نقطة الدخول الرئيسية لتحويلات الأنواع. يقبل المعامل to أنواع double و string و objectId و bool و date و int و long و decimal. فشل التحويل يُسبب خطأً افتراضيًا، لكن onError يوفّر بديلًا؛ والمدخل الفارغ يُرجع null افتراضيًا ويتجاوز onNull ذلك. الاستخدامات النموذجية: تحويل سلاسل رقمية إلى أرقام للحسابات أو تحليل سلاسل التواريخ إلى تواريخ. مقارنةً بالمختصرات مثل $toInt، يضيف $convert معالجة الفشل.
| الفئة | المجموعة والشرط والتحويل |
|---|---|
| إصدار MongoDB | 1.0+ |
| لغة المثال | mongosh (الطرفية) |
📝 الصيغة
{ $convert: { input: <expression>, to: <type>, onError: <fallback>, onNull: <nullResult> } }
⚙️ المعلمات
| input | القيمة المراد تحويلها. |
|---|---|
| to | النوع الهدف: double/string/objectId/bool/date/int/long/decimal. |
| onError | قيمة اختيارية تُرجَع عند فشل التحويل. |
| onNull | قيمة اختيارية تُرجَع عندما يكون الإدخال null أو مفقودًا. |
القيمة المرجعة:القيمة المحوَّلة؛ يُطبَّق onError/onNull عند الفشل أو null
▶ مثال
نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):
// $convert: تحليل سعر نصي إلى رقم، البديل 0
db.products.aggregate([
{ $project: {
priceNum: { $convert: { input: '$priceStr', to: 'double', onError: 0 } }
} }
])
المخرجات:
{ '_id': 1, 'priceNum': 19.9 }
{ '_id': 2, 'priceNum': 0 }
📌 ملاحظات
- الفشل يُسبب خطأً افتراضيًا؛ وفّر onError دائمًا في الإنتاج
- المدخل الفارغ يُرجع null؛ تجاوز ذلك بـ onNull
- $toInt/$toDouble وغيرها مختصرات لـ $convert لكنها تفتقر إلى onError
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
مزيد من الحالات العملية قريبًا.
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qماذا يحدث عندما يفشل $convert؟
Aيُسبب خطأً ويوقف خط الأنابيب؛ ومع onError يُرجع البديل.
Qكيف يختلف عن $toInt؟
A$toInt اختصار لـ $convert؛ و $convert يضيف معالجة onError/onNull.
Qأي الأنواع يقبل to؟
Adouble و string و objectId و bool و date و int و long و decimal.