$regexFindAll (كل تطابقات التعبير النمطي)

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

$regexFindAll (كل تطابقات التعبير النمطي)

ينفذ $regexFindAll بحثًا بتعبير نمطي على سلسلة نصية ويُرجع كل تطابق كمصفوفة؛ لكل عنصر حقول match و idx و captures، وعدم التطابق يُرجع مصفوفة فارغة. مثالي لاستخراج أنماط متكررة مثل رسائل البريد أو الروابط أو الأرقام. على عكس $regexFind لا يُرجع null أبدًا — دائمًا مصفوفة، لذا يعدّ $size التطابقات مباشرة.

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

📝 الصيغة

{ $regexFindAll: { input: <string-expression>, regex: <pattern>, options: <options> } }

⚙️ المعلمات

inputمطلوب؛ النص المراد البحث فيه.
regexمطلوب؛ نص نمط تعبير نمطي متوافق مع Perl.
optionsأعلام اختيارية مثل i وm.

القيمة المرجعة:مصفوفة من مستندات المطابقة؛ فارغة عند عدم وجود أي تطابق؛ وnull إذا كان الإدخال null.

▶ مثال

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

// $regexFindAll: استخراج كل الروابط من المشاركات
db.posts.aggregate([
  { $project: { links: { $regexFindAll: { input: '$body', regex: 'https?://[a-z0-9.]+' } } } }
])

المخرجات:

{ "_id": 1, "links": [ { "match": "https://a.com", "idx": 10, "captures": [] }, { "match": "https://b.org", "idx": 32, "captures": [] } ] }

📌 ملاحظات

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

📚 دروس ذات صلة

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

Qماذا يُرجع عند عدم تطابق شيء؟
Aمصفوفة فارغة، لا null.
Qكيف أعدّ التطابقات؟
Aلفّ النتيجة بـ $size.
Qما الفرق عن $regexFind؟
A$regexFind يُرجع أول تطابق (null إن لم يوجد)؛ و $regexFindAll يُرجع كل التطابقات.
Web-Tutorial.com

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

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

100%