با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، جلسه سی ام از آموزش های MongoDB را با فهرست سازی پیشرفته در MongoDB آغاز می کنیم. همچنین نحوه فهرست سازی فیلدهای آرایه و فهرست سازی فیلدهای زیر سند در MongoDB را یاد خواهیم گرفت.
ابتدا سند زیر که مجموعه users را نشان می دهد در نظر بگیرید :
1 2 3 4 5 6 7 8 9 10 11 12 13 | { "address": { "city": "Los Angeles", "state": "California", "pincode": "123" }, "tags": [ "music", "cricket", "blogs" ], "name": "Tom Benzamin" } |
سند فوق حاوی address sub-document و آرایه tags است.
فرض کنید می خواهیم اسناد user را بر اساس تگ های کاربر جستجو کنیم.
برای اینکار، ما یک index در آرایه تگ در مجموعه ایجاد خواهیم کرد.
ایجاد یک index در آرایه به نوبه خود برای ایجاد مطالب جداگانه فهرست برای هر یک از فیلدهای های آن است.
بنابراین هنگامی که ما یک index در آرایه تگ ایجاد می کنیم، index های جداگانه برای مقادیر music، cricket و وبلاگ ها ایجاد می شود.
برای ایجاد یک index در آرایه تگ، از کد زیر استفاده کنید :
1 | >db.users.ensureIndex({"tags":1}) |
پس از ایجاد فهرست، ما می توانیم در فیلدهای tags از مجموعه جستجو کنیم مانند مثال زیر:
1 | >db.users.find({tags:"cricket"}) |
برای بررسی اینکه آیا از فهرست سازی مناسب استفاده شده است، از فرمان explain زیر استفاده کنید:
1 | >db.users.find({tags:"cricket"}).explain() |
دستور بالا که در “cursor” نشان داده شد:
“BtreeCursor tags_1” که نشان می دهد که استفاده درست از فهرست ها استفاده می شود.
فرض کنید ما می خواهیم اسناد را بر اساس فیلد های city، state وpincode جستجو کنیم.
از آنجایی که همه این فیلد ها بخشی از آدرس زیر سند آدرس هستند، ما یک فهرست در همه زمینه های زیر سند ایجاد خواهیم کرد.
برای ایجاد یک فهرست در تمام سه حوزه زیر سند، از کد زیر استفاده کنید:
1 | >db.users.ensureIndex({"address.city":1,"address.state":1,"address.pincode":1}) |
هنگامی که فهرست ایجاد می شود، می توانیم برای هر یک از فیلدهای زیر سند با استفاده از این فهرست به صورت زیر جستجو کنیم :
1 | >db.users.find({"address.city":"Los Angeles"}) |
به خاطر داشته باشید که عبارت query باید دنباله ای از فهرست مشخص شده باشد. بنابراین فهرست ایجاد شده در بالا از کوئری زیر پشتیبانی می کند .
1 | >db.users.find({"address.city":"Los Angeles","address.state":"California"}) |
همچنین از کوئری زیر نیز پشتیبانی می کند .
1 2 | >db.users.find({"address.city":"LosAngeles","address.state":"California", "address.pincode":"123"}) |
آموزش فهرست سازی پیشرفته در MongoDB به اتمام رسید امیدوارم از مطالب ذکر شده بهره مند شده باشید.با ما همراه باشید تا در جلسه بعد آموزش محدودیت های فهرست گذاری در MongoDB را فرا بگیرید.