تا این قسمت با انواع مختلفی از ایندکس ها آشنا شده ایم اما هنوز انواع دیگری باقی مانده است. در این جلسه می خواهیم در رابطه با ایندکس های چند کلیدی یا multi-key indexes صحبت کنیم. برای شروع این جلسه مطمئن شوید که کوئری زیر را اجرا می کنید تا کالکشن contacts (کالکشن 5000 هزار سندی که import کرده بودیم) حذف شود: db.contacts.drop() با اجرای این کوئری، مقدار true به شما نمایش داده می شود. سپس این کالکشن را با مقادیر جدید می سازیم: db.contacts.insertOne({name: “Amir”, hobbies: [“Programming”, “Gym”], addresses: [{street: “Main street”}, {street: “Second Street”}]}) با این کار کاربر جدید ما وارد کالکشن جدید می شود. برای مشاهده ی آن باید کوئری findOne را اجرا کنیم: همانطور که می بینید این کاربر hobbies را به صورت یک آرایه ی ساده دارد که دو عضو رشته ای در آن است. سپس در قسمت Addresses که یک آرایه است دو embedded document دارد. من برای ساده شدن کار فقط مقدار رشته ای را به آن ها داده ام. حالا سوال جالبی از شما دارم: آیا می توانیم کل قسمت hobbies را index کنیم؟ ما می دانیم که hobbies یک آرایه است اما آیا این کار ممکن است؟ بیایید امتحان کنیم: db.contacts.createIndex({hobbies: 1}) با اجرای این کد هیچ خطایی نمی گیریم. حتی می توانیم از این به بعد به شکل زیر از آن استفاده کنیم: db.contacts.find({hobbies: “Gym”}).pretty() با اجرای کوئری بالا Amir برایمان برگردانده می شود و چیز عجیبی نداریم اما اگر آن را به explain اجرا کنیم، در گزارش خود نکته ی جالبی را می بینیم: db.contacts.explain(“executionStats”).find({hobbies: “Gym”}) در گزارش برگردانده شده قسمت زیر مشخص است: “isMultiKey” : true,
پنل نویسندگان
