createIndex() (إنشاء فهرس)
آخر تحديث: 2026-10-09
createIndex() (إنشاء فهرس)
تُنشئ createIndex() فهرسًا واحدًا لتسريع الاستعلامات، مثل `db.users.createIndex({ age: 1 }, { unique: true })`. القيمة 1 للترتيب التصاعدي و-1 للتنازلي؛ وتدعم أيضًا أنواع فهارس text و hashed و 2dsphere. الفهرس الفريد يفرض تفرد الحقل. لاحظ أن بناء فهرس على مجموعة كبيرة قد يستغرق وقتًا ويحجب الكتابة — جدوله خارج أوقات الذروة في الإنتاج.
| الفئة | الفهرس والإدارة |
|---|---|
| إصدار MongoDB | 1.0+ |
| لغة المثال | mongosh (الطرفية) |
📝 الصيغة
db.<collection>.createIndex(<keys>, <options>)
⚙️ المعلمات
| مفتاح الفهرس | ربط الحقول بالاتجاه، مثل {age: 1, name: -1}. |
|---|---|
| خيارات | اختياري. خيارات مثل unique وsparse وname وbackground. |
القيمة المرجعة:اسم الفهرس الجديد (نص).
▶ مثال
نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):
// createIndex: فهرس فريد تصاعدي على حقل age
const idx = db.users.createIndex({ age: 1 }, { unique: true })
idx
المخرجات:
'age_1'
📌 ملاحظات
- اسم الفهرس الافتراضي هو 'field_direction'؛ غيّره بخيار name
- يرفض الفهرس الفريد التكرارات بخطأ DuplicateKeyError
- ترتيب حقول الفهرس المركّب مهم — تُطبَّق البادئة اليسرى
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qكيف أنشئ فهرسًا فريدًا بـ createIndex؟
Aأضف {unique: true} إلى الخيارات، مثل db.users.createIndex({email: 1}, {unique: true}).
Qهل تحجب createIndex الاستعلامات؟
Aأثرت الإصدارات الأقدم على الكتابة ولو لفترة وجيزة حتى في الوضع الخلفي؛ البناء الهجين منذ 4.2 يؤثر على القراءة/الكتابة أقل بكثير، لكن يُفضَّل التوقيت خارج الذروة للمجموعات الكبيرة.
Qكيف أنشئ فهرسًا مركّبًا؟
Aمرّر حقولًا متعددة، مثل db.users.createIndex({age: 1, name: -1})؛ وتستفيد الاستعلامات التي تستخدم البادئة اليسرى.