JavaScript (كود على جانب الخادم)

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

JavaScript (كود على جانب الخادم)

يخزّن نوع JavaScript كود JS في مستند، يُنفَّذ على الخادم عبر `$where` (يُشغَّل لكل مستند). لا يمكن لـ `$where` استخدام الفهارس وهو بطيء — لا يصلح إلا للمجموعات الصغيرة أو منطق لا يمكن لأي عامل استعلام التعبير عنه. منذ MongoDB 8.0، تعطَّل جافاسكريبت على جانب الخادم افتراضيًا ويتطلب علم إقلاع صريحًا؛ فضّل `$expr` أو عامل التجميع `$function` في الكود الجديد.

الفئةأنواع BSON
إصدار MongoDB1.0+
لغة المثالmongosh (الطرفية)

📝 الصيغة

{ $where: "this.price * this.qty > 100" }
{ $expr: { $gt: [{ $multiply: ["$price", "$qty"] }, 100] } }

القيمة المرجعة:‏$where يُرجع المستندات التي تجتاز الشرط؛ والقيم JS المخزَّنة هي نصوص برمجية

▶ مثال

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

// JavaScript: $where من جهة الخادم
use shop
db.orders.find({ $where: 'this.price * this.qty > 1000' })

المخرجات:

// الطلبات التي price * qty > 1000 (مسح كامل للمجموعة)

📌 ملاحظات

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

📚 دروس ذات صلة

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

Qلماذا تكون $where بطيئة؟
Aتستدعي مترجم JS لكل مستند، ولا يمكنها استخدام الفهارس، وتفرض فحصًا كاملًا.
Qهل ما زالت $where تعمل في MongoDB 8.0؟
Aمعطّلة افتراضيًا؛ شغّل الخادم بـ --enableJavaScriptExecution لإعادتها.
Qكيف أعبر عن مقارنات معقدة عبر الحقول؟
Aاستخدم $expr مع عوامل تجميع مثل $multiply — قابل للتحسين وصديق للفهارس جزئيًا.
Web-Tutorial.com

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

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

100%