$getField (الحصول على حقل بالاسم)
آخر تحديث: 2026-10-09
$getField (الحصول على حقل بالاسم)
يجلب $getField حقلًا باسمه الحرفي من مستند، دون تحليل الاسم كمسار حقل حتى لو بدأ بـ $ أو احتوى أحرفًا خاصة. الصياغة { $getField: { field: field-name, input: document } }، مع افتراض input بـ $$CURRENT. يُستخدم لأسماء الحقول الديناميكية أو الأسماء ذات الأحرف الخاصة. الحقل المفقود يُرجع null. مقارنةً بكتابة '$field' مباشرة، $getField أكثر مرونة لكنه أكثر إسهابًا.
| الفئة | الحرفي والمتغير والكائن |
|---|---|
| إصدار MongoDB | 5.0+ |
| لغة المثال | mongosh (الطرفية) |
📝 الصيغة
{ $getField: { field: <field-name>, input: <document-expression> } }
⚙️ المعلمات
| field | اسم الحقل كنص أو تعبير يُحلّ إلى نص. |
|---|---|
| input | مستند الهدف اختياري؛ الافتراضي هو $$CURRENT. |
القيمة المرجعة:قيمة الحقل؛ null عندما يكون الحقل مفقودًا أو الإدخال null
▶ مثال
نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):
// $getField: جلب حقل بالاسم من المستند الحالي
db.orders.aggregate([
{ $project: {
price: { $getField: { field: 'price', input: '$$CURRENT' } }
} }
])
المخرجات:
{ '_id': 1, 'price': 199 }
{ '_id': 2, 'price': 59 }
📌 ملاحظات
- اسم الحقل الذي يبدأ بـ $ يُؤخذ حرفيًا لا كمسار
- input يُعرّف افتراضيًا على $$CURRENT
- الحقل المفقود يُرجع null؛ اقرنه بـ $ifNull عند الحاجة
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
مزيد من الحالات العملية قريبًا.
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qكيف يختلف $getField عن كتابة $field مباشرة؟
Aتُحلل المسارات المباشرة للنقاط و $، بينما يبحث $getField عن الاسم الحرفي ويدعم الأحرف الخاصة والأسماء الديناميكية.
Qهل يمكن لـ $getField جلب أسماء تحتوي نقاطًا؟
Aنعم، يُعامل الاسم حرفيًا ولا يُقسم إلى مسارات متداخلة.
Qماذا يحدث عند حذف input من $getField؟
Aيُعرّف افتراضيًا على $$CURRENT، المستند الحالي.