$toDecimal (التحويل إلى Decimal128)

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

$toDecimal (التحويل إلى Decimal128)

يحوّل $toDecimal قيمة إلى Decimal128، النوع العشري عالي الدقة للمال والحسابات الحساسة للدقة، متجنبًا أخطاء الفاصلة العائمة الثنائية لـ double. يقبل الأرقام والسلاسل الرقمية والقيم المنطقية؛ ويبقى null null. الاستخدامات النموذجية: تراكم مبالغ الطلبات ومقارنتها. الحسابات المختلطة مع double ترفع تلقائيًا إلى عشري، لكن تحويلات السلاسل غير الصالحة تُسبب خطأً، لذا احرس بـ $convert onError.

الفئةالمجموعة والشرط والتحويل
إصدار MongoDB1.0+
لغة المثالmongosh (الطرفية)

📝 الصيغة

{ $toDecimal: <expression> }

⚙️ المعلمات

تعبيررقم أو نص رقمي أو قيمة منطقية.

القيمة المرجعة:قيمة Decimal128؛ null عندما يكون الإدخال null

▶ مثال

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

// $toDecimal: تحليل سلسلة مبلغ بدقة عالية
db.orders.aggregate([
  { $project: {
      amount: { $toDecimal: '$amountStr' }
  } }
])

المخرجات:

{ '_id': 1, 'amount': { '$numberDecimal': '199.90' } }

📌 ملاحظات

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

📚 دروس ذات صلة

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

Qلماذا نستخدم العشري للمال؟
Adouble يحوي خطأ الفاصلة العائمة الثنائية؛ 0.1 يتراكم بدقة ناقصة، بينما Decimal128 دقيق.
Qأي المدخلات تتحول؟
Aالأرقام والسلاسل الرقمية والقيم المنطقية (true تصبح 1).
Qماذا عن السلسلة 'abc'؟
Aتُسبب خطأً؛ احرس بـ $convert onError.
Web-Tutorial.com

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

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

100%