$set (تعيين الحقل)
آخر تحديث: 2026-10-09
$set (تعيين الحقل)
يقوم $set بتعيين (أو استبدال) قيمة حقل واحد أو أكثر في مستند. ينشئ الحقل إذا لم يكن موجودًا ويدعم المسارات النقطية للحقول المتداخلة. وهو عامل التحديث الأكثر استخدامًا. فالعبارة `{ $set: { "price": 19.99, "inStock": true } }` تعيّن عدة حقول دفعة واحدة.
| الفئة | تحديث الحقل |
|---|---|
| إصدار MongoDB | 1.0+ |
| لغة المثال | mongosh (الطرفية) |
📝 الصيغة
{ $set: { <field1>: <value1>, <field2>: <value2>, ... } }
▶ مثال
نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):
// $set: تعيين عدة حقول
db.products.updateOne(
{ _id: 1 },
{ $set: { price: 19.99, inStock: true } }
)
المخرجات:
// يُرجع updatedCount: 1؛ يصبح سعر المستند 19.99 وinStock يساوي true
📌 ملاحظات
- تطابق دلالات $set السابقة للإصدار 5.0؛ تغيرت دلالات تحديث المصفوفات قليلًا منذ MongoDB 7.0
- استخدم updateMany لتطبيق التحديث على كل المستندات المطابقة
- يستبدل $set الحقول الموجودة ولا يدمجها
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
تجربة عملية: عمليات CRUD لنظام تعليقات المدونة
التحقق من صحة المخطط: التحقق من صحة البيانات على مستوى قاعدة البيانات
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qهل يمكن استخدام $set و $inc معًا؟
Aنعم. يعيّن $set قيمة ثابتة بينما يُجري $inc عملية حسابية؛ ويمكنهما الظهور معًا في تحديث واحد (باستثناء نفس الحقل).
Qكيف يختلف $set عن الإسناد المباشر في التحديث؟
Aيحدّث $set الحقول المذكورة فقط ويترك بقية المستند دون مساس. أما استبدال المستند بالكامل فيتطلب replaceOne، الذي يتجاهل أي حقول غير محددة.
Qهل يستبدل $set الحقول الموجودة؟
Aنعم. يستبدل $set الحقول الموجودة بالقيمة الجديدة وينشئ المفقود منها. وهو غير استبدالي: تكرار نفس $set يعطي النتيجة نفسها.