$setField (تعيين حقل بالاسم)

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

$setField (تعيين حقل بالاسم)

يضيف $setField أو يحدّث حقلًا مسمى في مستند ويُرجع مستندًا جديدًا دون تعديل المدخل. الصياغة { $setField: { field: field-name, input: document, value: expression } }، ويقبل field تعبيرًا ديناميكيًا. القيمة null تحذف الحقل. يُستخدم عندما تحتوي أسماء الحقول أحرفًا خاصة أو يجب حسابها ديناميكيًا. المدخل الفارغ أو المفقود يُرجع null. على خلاف مرحلة $set، يعمل $setField داخل التعبيرات المتداخلة ويدعم أسماء الحقول الديناميكية.

الفئةالحرفي والمتغير والكائن
إصدار MongoDB5.0+
لغة المثالmongosh (الطرفية)

📝 الصيغة

{ $setField: { field: <field-name>, input: <document-expression>, value: <expression> } }

⚙️ المعلمات

fieldاسم الحقل كنص أو تعبير يُحلّ إلى نص.
inputمستند الهدف؛ الإدخال null أو المفقود يُنتج null.
valueالقيمة المراد تعيينها؛ ‏null يحذف الحقل.

القيمة المرجعة:مستند جديد مع تعيين الحقل؛ null عندما يكون الإدخال null أو مفقودًا

▶ مثال

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

// $setField: إضافة حقل معدل الضريبة لكل طلب
db.orders.aggregate([
  { $project: {
      doc: { $setField: { field: 'taxRate', input: '$$CURRENT', value: 0.08 } }
  } }
])

المخرجات:

{ '_id': 1, 'doc': { '_id': 1, 'price': 100, 'taxRate': 0.08 } }
{ '_id': 2, 'doc': { '_id': 2, 'price': 50, 'taxRate': 0.08 } }

📌 ملاحظات

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

📚 دروس ذات صلة

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

Qهل يعدّل $setField المستند الأصلي؟
Aلا — المستندات غير قابلة للتعديل في خطوط الأنابيب؛ يُرجع $setField مستندًا جديدًا.
Qكيف أحذف حقلًا بـ $setField؟
Aاضبط value على null فيُحذف الحقل.
Qكيف يختلفان $setField ومرحلة $set؟
A$set يتعامل مع أسماء الحقول الثابتة فقط، بينما يدعم $setField الأسماء الديناميكية والتعبيرات المتداخلة.
Web-Tutorial.com

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

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

100%