$inc (الزيادة)
آخر تحديث: 2026-10-09
$inc (الزيادة)
يقوم $inc بزيادة (أو إنقاص) حقل رقمي بمقدار محدد، وينشئ الحقل بالمقدار إذا لم يكن موجودًا. فالعبارة `{ $inc: { views: 1 } }` تضيف 1 إلى views؛ و`{ $inc: { stock: -5 } }` تطرح 5. وهو ذري ومثالي للعدادات وأعداد المشاهدات، ويتجنب سباقات القراءة-ثم-الكتابة.
| الفئة | تحديث الحقل |
|---|---|
| إصدار MongoDB | 1.0+ |
| لغة المثال | mongosh (الطرفية) |
📝 الصيغة
{ $inc: { <field>: <amount> } }
▶ مثال
نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):
// $inc: views +1، stock -5
db.articles.updateOne(
{ _id: 1 },
{ $inc: { views: 1 } }
)
db.products.updateOne(
{ _id: 2 },
{ $inc: { stock: -5 } }
)
المخرجات:
// عند غياب الحقل: يُنشأ views بقيمة 1؛ وينخفض stock بمقدار 5
📌 ملاحظات
- يدعم الأنواع الرقمية فقط؛ استخدام $inc على حقل غير رقمي يرمي خطأ
- الزيادة بصفر ما زالت تنشئ الحقل إذا كان مفقودًا
- $inc ذري؛ لا حاجة لفصل عملية البحث عن التحديث
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
تجربة عملية: عمليات CRUD لنظام تعليقات المدونة
معالجة المعاملات: ACID واتساق المستندات المتعددة
تحديث المستند: شرح مفصل لـ `updateOne` و`updateMany`
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qهل يمكن لـ $inc العمل على السلاسل؟
Aلا. يقبل $inc الأنواع الرقمية فقط؛ استخدامه على السلاسل يرمي خطأ. لدمج السلاسل استخدم $concat (في التجميع) أو القراءة-ثم-الكتابة.
Qماذا يحدث عندما يستهدف $inc حقلًا مفقودًا؟
Aإذا لم يكن الحقل موجودًا، يعامل $inc قيمته الأولية كصفر وينشئه بمقدار الزيادة. يجب أن يكون الحقل رقميًا وإلا يُرمى خطأ.
Qهل يمكن لـ $inc إنقاص قيمة؟
Aنعم، مرر مقدارًا سالبًا، مثل { $inc: { score: -5 } } الذي ينقص score بمقدار 5. $inc ذري ومثالي للعدادات ولوحات المتصدرين في ظل التزامن.