English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في هذا الفصل، سنتعلم الاستعلامات المغطاة.
حسب الوثائق الرسمية لمongoDB، الاستعلامات المغطاة هي مثل هذا الاستعلام، حيث-
جميع الحقول في الاستعلام هي جزء من الفهرس.
جميع الحقول التي يتم العودة إليها موجودة في نفس الفهرس.
بسبب أن جميع الحقول الموجودة في الاستعلام هي جزء من الفهرس، سيقوم MongoDB بمطابقة شروط الاستعلام باستخدام نفس الفهرس للتحصل على النتائج دون الحاجة إلى النظر في الداخلية للوثائق. لأن الفهرس موجود في ذاكرة الوصول العشوائي، لذا فإن الحصول على البيانات من الفهرس أسرع بكثير مقارنة بالحصول على البيانات من مسح الوثائق.
لاختبار الاستعلامات التي تغطيها، انظر-sers
الوثائق التالية في المجموعة-
{ "_id": ObjectId("53402597d852426020000003"), "contact": "987654321", "dob": "01-01-1991", "gender": "M", "name": "Tom Benzamin", "user_name": "tombenzamin" }
سنستخدم أولاً الاستعلام التالي لإنشاء فهرس مركب في الحقول gender و user_name في مجموعة users-
>db.users.createIndex({gender:1,user_name:1}) { "createdCollectionAutomatically": false, "numIndexesBefore": 1, "numIndexesAfter": 2, "ok": 1 }
الآن، الفهرس سيغطي الاستعلامات التالية-
>db.users.find({gender:"M"},{user_name:1,_id:0}) {"user_name": "tombenzamin"}
بمعنى آخر، بالنسبة للاستعلام المذكور أعلاه، لن يرى MongoDB مستندات قاعدة البيانات. بدلاً من ذلك، سيتعين عليه الحصول على البيانات المطلوبة من بيانات index، وهو أمر سريع للغاية.
بسبب عدم وجود_id
الحقول، لذا قمنا بإزالتها من نتائج الاستعلام بشكل صريح، لأنMongoDB يقوم بتقديم حقل _id في كل استعلام بشكل افتراضي. لذلك، لن يحتوي الاستعلام التالي على الذي تم إنشاؤه في index–
>db.users.find({gender:"M"},{user_name:1}) {"_id": "53402597d852426020000003", "user_name": "tombenzamin"}
في النهاية، تذكر، إذا، لا يمكن تغطية index بالاستعلام
كل حقل index هو مجموعة
كل حقل index هو مستند فرعي