$where (تعبير جافاسكربت)

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

$where (تعبير جافاسكربت)

يقيّم $where تعبير جافاسكربت كمسند استعلام. `{ $where: 'this.credits == this.debits' }`. يُنفَّذ من جانب الخادم، وهو بطيء ولا يمكنه استخدام الفهارس، ويوصي MongoDB باستخدام $expr بدلًا منه. استخدمه فقط عندما لا يستطيع $expr التعبير عن المنطق (مثل دوال جافاسكربت مخصصة) واحمِ نفسك من الحقن.

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

📝 الصيغة

{ $where: <JavaScript expression> }

⚙️ المعلمات

تعبير JSتعبير JavaScript يُرجع قيمة منطقية؛ ويشير ‏this إلى المستند الحالي.

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

▶ مثال

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

// $where: السجلات التي تساوي فيها الاعتمادات الخصوم (جافاسكربت)
db.accounts.find({ $where: 'this.credits == this.debits' })

// الموصى به: $expr أسرع
db.accounts.find({ $expr: { $eq: ['$credits', '$debits'] } })

المخرجات:

// كلاهما يُرجع النتيجة نفسها، لكن $expr أداء أفضل

📌 ملاحظات

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

📚 دروس ذات صلة

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

Qلماذا $where بطيء؟
Aيقيّم جافاسكربت لكل مستند من جانب الخادم دون دعم فهرس.
Qكيف أختار بين $where و $expr؟
Aفضّل $expr: أداء أفضل ودعم للفهارس؛ استخدم $where فقط لمنطق جافاسكربت مخصص.
Qهل لـ $where مخاطر أمنية؟
Aنعم. دمج مدخلات المستخدم في السلسلة يتيح الحقن؛ قم بترميز المعاملات أو انتقل إلى $expr.
Web-Tutorial.com

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

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

100%