تخطَّ إلى المحتوى

🍃 شرح MongoDB

البحث النصي ($text)

الدرس 30 من 31· ⏱ 1 دقائق قراءة· 🗓 آخر تحديث: ٢١ يوليو ٢٠٢٦

فهرس النص (Text Index)

قبل أي بحث نصي، لازم فهرس من نوع text على الحقول المطلوب البحث فيها:

db.articles.createIndex({ title: "text", body: "text" })

⚠️ كل مجموعة (collection) تقدر تملك فهرس نصي واحد فقط، حتى لو غطّى عدّة حقول.

البحث بـ $text

db.articles.find({ $text: { $search: "قواعد بيانات" } })
  • البحث الافتراضي غير حسّاس لحالة الأحرف ولا للتشكيل.
  • يبحث عن أي كلمة من الكلمات (OR ضمنيًّا)، لا الجملة كاملة.

بحث عن جملة محدّدة

ضع الجملة بين علامتَي اقتباس داخل $search للمطابقة الحرفية:

db.articles.find({ $text: { $search: "\"قواعد بيانات NoSQL\"" } })

استبعاد كلمة

ضع - قبل الكلمة المراد استبعادها:

db.articles.find({ $text: { $search: "mongodb -sql" } })   // mongodb بدون sql

الترتيب حسب الصلة (Relevance)

استخدم $meta لجلب درجة التطابق والترتيب حسبها:

db.articles.find(
  { $text: { $search: "قواعد بيانات" } },
  { score: { $meta: "textScore" } }
).sort({ score: { $meta: "textScore" } })
$text (فهرس نصي عادي)$search (Atlas Search)
البيئةيعمل محليًّا وعلى Atlasيتطلّب Atlas
المحرّكمدمج في MongoDBApache Lucene
الميزاتبحث بسيط، ترتيب بالصلةتصحيح إملائي، autocomplete، مرادفات، تحليلات لغوية متقدّمة
عدد الفهارسفهرس واحد لكل مجموعةعدّة فهارس لكل مجموعة

💡 MongoDB توصي رسميًّا بـ $search (المشروح في درس Atlas) للتطبيقات الإنتاجية الجادّة — $text يبقى خيارًا سريعًا وكافيًا للمشاريع الصغيرة أو النشر الذاتي بلا Atlas.

🎯 التالي: النسخ المتماثلة والتوسّع الأفقي.

شرح البحث النصي ($text) — MongoDB بالعربي
البحث النصي ($text)MongoDB بالعربي · The Code Fix

📚 لمزيد من التعمّق في MongoDB، راجِع التوثيق الرسمي لـ MongoDB.

هل كان هذا الدرس مفيدًا؟