$expr (استعلام بتعبيرات التجميع)

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

$expr (استعلام بتعبيرات التجميع)

يتيح $expr لمسندات الاستعلام استخدام تعبيرات التجميع — لمقارنة حقول متعددة من المستند نفسه أو استدعاء عوامل التجميع. فالعبارة `{ $expr: { $gt: ['$price', '$cost'] } }` تجد المنتجات التي سعرها أعلى من التكلفة؛ والبادئة $ تشير إلى قيم الحقول. لا يمكن لـ $expr عمومًا استخدام الفهارس (دعم جزئي منذ MongoDB 6.0)، لذا استخدمه بحذر على المجموعات الكبيرة.

الفئةالعنصر والتقييم
إصدار MongoDB3.6+
لغة المثالmongosh (الطرفية)

📝 الصيغة

{ $expr: { <aggregation expression> } }

⚙️ المعلمات

تعبير التجميعتعبير تجميع، مثل { $gt: ['$price', '$cost'] }؛ ويشير ‏$ إلى قيم الحقول.

القيمة المرجعة:مؤشر المستندات المطابقة

▶ مثال

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

// $expr: المنتجات التي سعرها أعلى من التكلفة
// $price يشير إلى قيمة الحقل
db.products.find({ $expr: { $gt: ['$price', '$cost'] } })

// مقارنة حقلين من حيث المساواة
db.users.find({ $expr: { $eq: ['$email', '$username'] } })

المخرجات:

// يُرجع المنتجات التي يتجاوز سعرها التكلفة؛ والمستخدمين الذين يساوي بريدهم اسم المستخدم

📌 ملاحظات

📚 دروس ذات صلة

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

Qكيف يقارن $expr حقلين من مستند واحد؟
Aاشِر إلى الحقول بـ $: { $expr: { $gt: ['$price', '$cost'] } }.
Qهل يمكن لـ $expr استخدام فهرس؟
Aعادة لا؛ منذ MongoDB 6.0 يمكن لبعض الحالات (مثل مقارنات النطاق) استخدام فهرس.
Qما الفرق بين $expr و $where؟
Aيستخدم $expr تعبيرات التجميع (موصى به)؛ بينما يشغّل $where جافاسكربت (بطيء، بدون فهارس).
Web-Tutorial.com

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

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

100%