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