$regex (مطابقة التعبير النمطي)
آخر تحديث: 2026-10-09
$regex (مطابقة التعبير النمطي)
يطابق $regex الحقول النصية باستخدام تعبير نمطي. فالعبارة `{ name: { $regex: '^A' } }` تطابق الأسماء التي تبدأ بالحرف A. الخيارات: i لعدم حساسية حالة الأحرف، m للأسطر المتعددة، x لتجاهل الفراغات. بدون فهرس يمسح استعلام $regex المجموعة بأكملها؛ فقط البادئات المرساة (^) مع حساسية حالة الأحرف يمكنها الاستفادة من فهرس عادي.
| الفئة | العنصر والتقييم |
|---|---|
| إصدار MongoDB | 1.0+ |
| لغة المثال | mongosh (الطرفية) |
📝 الصيغة
{ <field>: { $regex: <pattern>, $options: '<options>' } }
⚙️ المعلمات
| حقل | حقل المستند المراد مطابقته. |
|---|---|
| تعبير نمطي | نمط تعبير نمطي بأسلوب PCRE. |
| خيارات | اختياري: i تجاهل حالة الأحرف، وm متعدد الأسطر، وx تجاهل المسافات، وغيرها. |
القيمة المرجعة:مؤشر المستندات المطابقة
▶ مثال
نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):
// $regex: الأسماء التي تبدأ بـ A (حساس لحالة الأحرف)
db.users.find({ name: { $regex: '^A' } })
// غير حساس لحالة الأحرف: عنوان يحتوي mongodb
db.articles.find({ title: { $regex: 'mongodb', $options: 'i' } })
المخرجات:
// يُرجع الأسماء التي تبدأ بـ A؛ والعناوين التي تحتوي mongodb في أي موضع (غير حساس لحالة الأحرف)
📌 ملاحظات
- فقط البادئات المرساة (^) مع حساسية حالة الأحرف يمكنها استخدام فهرس عادي
- اهرب الرموز الخاصة، مثل \. لمطابقة نقطة حرفية
- أبقِ $options منفصلة: { $regex: '...', $options: 'i' }
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qكيف أجعل $regex غير حساس لحالة الأحرف؟
Aأضف $options: 'i'، مثل { name: { $regex: 'alice', $options: 'i' } }.
Qهل يمكن لـ $regex استخدام فهرس؟
Aفقط الأنماط المرساة الحساسة لحالة الأحرف (مثل ^A) تستخدم فهرسًا عاديًا؛ وإلا فهو مسح للمجموعة.
Qهل يجب استخدام $regex أم $text للبحث النصي الكامل؟
Aللنصوص الكبيرة استخدم $text (مفهرس مع استخلاص الجذور)؛ $regex مناسب للبيانات الصغيرة أو الأنماط الدقيقة.