$regex (مطابقة التعبير النمطي)

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

$regex (مطابقة التعبير النمطي)

يطابق $regex الحقول النصية باستخدام تعبير نمطي. فالعبارة `{ name: { $regex: '^A' } }` تطابق الأسماء التي تبدأ بالحرف A. الخيارات: i لعدم حساسية حالة الأحرف، m للأسطر المتعددة، x لتجاهل الفراغات. بدون فهرس يمسح استعلام $regex المجموعة بأكملها؛ فقط البادئات المرساة (^) مع حساسية حالة الأحرف يمكنها الاستفادة من فهرس عادي.

الفئةالعنصر والتقييم
إصدار MongoDB1.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 في أي موضع (غير حساس لحالة الأحرف)

📌 ملاحظات

📚 دروس ذات صلة

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

Qكيف أجعل $regex غير حساس لحالة الأحرف؟
Aأضف $options: 'i'، مثل { name: { $regex: 'alice', $options: 'i' } }.
Qهل يمكن لـ $regex استخدام فهرس؟
Aفقط الأنماط المرساة الحساسة لحالة الأحرف (مثل ^A) تستخدم فهرسًا عاديًا؛ وإلا فهو مسح للمجموعة.
Qهل يجب استخدام $regex أم $text للبحث النصي الكامل؟
Aللنصوص الكبيرة استخدم $text (مفهرس مع استخلاص الجذور)؛ $regex مناسب للبيانات الصغيرة أو الأنماط الدقيقة.
Web-Tutorial.com

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

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

100%