$subtract (الطرح)
آخر تحديث: 2026-10-09
$subtract (الطرح)
ينفذ $subtract عملية الطرح في تعبيرات التجميع، وهو النظير المقابل لـ $add. يأخذ وسيطتين بالضبط: رقم ناقص رقم يُرجع الفرق، وتاريخ ناقص تاريخ يُرجع ميلي ثانية، وتاريخ ناقص ميلي ثانية يُرجع تاريخًا أسبق. يُستخدم غالبًا في $project أو $set لحساب الفروق مثل السعر بعد الخصم أو الوقت المنقضي بين طابعين زمنيين. لاحظ أن $subtract يقبل وسيطتين فقط ولا يمكنه استيعاب عدة عوامل كما يفعل $add. أي وسيطة فارغة أو مفقودة تُنتج null.
| الفئة | الرياضيات |
|---|---|
| إصدار MongoDB | 1.0+ |
| لغة المثال | mongosh (الطرفية) |
📝 الصيغة
{ $subtract: [ <expression1>, <expression2> ] }
⚙️ المعلمات
| المطروح منه | قيمة رقمية أو تاريخ أو تعبير يُحلّ إلى أيٍّ منهما. |
|---|---|
| المطروح | رقم (مللي ثانية) أو تعبير تاريخ يُطرح من المطروح منه. |
القيمة المرجعة:الفرق الرقمي؛ تاريخ ناقص تاريخ يُرجع مللي ثانية؛ وتاريخ ناقص مللي ثانية يُرجع تاريخًا
▶ مثال
نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):
// $subtract: حساب السعر بعد الخصم
db.orders.aggregate([
{ $project: {
finalPrice: { $subtract: ['$price', '$discount'] }
} }
])
المخرجات:
{ '_id': 1, 'finalPrice': 90 }
{ '_id': 2, 'finalPrice': 45 }
📌 ملاحظات
- يقبل وسيطتين بالضبط؛ أكثر من وسيطتين يرمي خطأً
- التاريخ ناقص التاريخ يُرجع ميلي ثانية؛ اقسم على 86400000 للحصول على الأيام
- أي وسيطة فارغة أو مفقودة تُنتج null
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
مزيد من الحالات العملية قريبًا.
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qهل يمكن لـ $subtract حساب فرق الأيام بين تاريخين؟
Aيُرجع ميلي ثانية؛ اقسم على 86400000 للأيام، أو استخدم $dateDiff مع وحدة اليوم.
Qكيف يرتبط $subtract بـ $add؟
Aإنهما معكوسان؛ $subtract يأخذ وسيطتين بينما يقبل $add عدة وسائط.
Qماذا يعطي التاريخ ناقص ميلي ثانية؟
Aتاريخًا أسبق؛ مثلًا، طرح 86400000 من تاريخ طلب يعطي اليوم السابق.