$toDecimal (التحويل إلى Decimal128)
آخر تحديث: 2026-10-09
$toDecimal (التحويل إلى Decimal128)
يحوّل $toDecimal قيمة إلى Decimal128، النوع العشري عالي الدقة للمال والحسابات الحساسة للدقة، متجنبًا أخطاء الفاصلة العائمة الثنائية لـ double. يقبل الأرقام والسلاسل الرقمية والقيم المنطقية؛ ويبقى null null. الاستخدامات النموذجية: تراكم مبالغ الطلبات ومقارنتها. الحسابات المختلطة مع double ترفع تلقائيًا إلى عشري، لكن تحويلات السلاسل غير الصالحة تُسبب خطأً، لذا احرس بـ $convert onError.
| الفئة | المجموعة والشرط والتحويل |
|---|---|
| إصدار MongoDB | 1.0+ |
| لغة المثال | mongosh (الطرفية) |
📝 الصيغة
{ $toDecimal: <expression> }
⚙️ المعلمات
| تعبير | رقم أو نص رقمي أو قيمة منطقية. |
|---|
القيمة المرجعة:قيمة Decimal128؛ null عندما يكون الإدخال null
▶ مثال
نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):
// $toDecimal: تحليل سلسلة مبلغ بدقة عالية
db.orders.aggregate([
{ $project: {
amount: { $toDecimal: '$amountStr' }
} }
])
المخرجات:
{ '_id': 1, 'amount': { '$numberDecimal': '199.90' } }
📌 ملاحظات
- فضّل العشري للمال لتجنب أخطاء دقة double
- السلاسل الرقمية غير الصالحة (مثل 'abc') تُسبب خطأً
- المدخل الفارغ يُرجع null
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
مزيد من الحالات العملية قريبًا.
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qلماذا نستخدم العشري للمال؟
Adouble يحوي خطأ الفاصلة العائمة الثنائية؛ 0.1 يتراكم بدقة ناقصة، بينما Decimal128 دقيق.
Qأي المدخلات تتحول؟
Aالأرقام والسلاسل الرقمية والقيم المنطقية (true تصبح 1).
Qماذا عن السلسلة 'abc'؟
Aتُسبب خطأً؛ احرس بـ $convert onError.