دیتابیس MongoDB - دستورات پیشرفته

در دو بخش قبلی مفاهیم و دستورات مقدماتی MongoDB را بررسی کردیم. در این بخش به دستورات کمی advanced تر در MongoDB می پردازیم.پروجکشن (projection)به معنای محدودیت فیلدها در document های حاصل از نتیجه select در خروجی است. متد find یک پارامتر اختیاری ورودی دیگر که لیستی از فیلد هایی است که باید در خروجی نمایش داده شوند یا نمایش داده نشوند را دریافت می کند. این پارمتر ها با key که نام فیلد مورد نظر و value صفر یا یک مشخص می شود. دستور زیر شکل کلی projection را در MongoDB نمایش می دهد:>db.COLLECTION_NAME.find({},{KEY:1})مثال>db.mycol.find({},{&quottitle&quot:1,_id:0}) {&quottitle&quot:&quotMongoDB Overview&quot} {&quottitle&quot:&quotNoSQL Overview&quot} {&quottitle&quot:&quotTutorials Point Overview&quot}نکته: باید دقت داشت که id_ همواره در خروجی نمایش داده می شود. برای عدم نمایش id_ باید مقدار آن را در projection برابر صفر قرار داد.متد Limitبرای دریافت و نمایش تعداد خاصی از document های حاصل از select از این متد استفاده می شود.>db.COLLECTION_NAME.find().limit(NUMBER)مثال>db.mycol.find({},{&quottitle&quot:1,_id:0}).limit(2) {&quottitle&quot:&quotMongoDB Overview&quot} {&quottitle&quot:&quotNoSQL Overview&quot}متد Skipبرای اینکه از تعداد خاصی از document های حاصل از select چشم پوشی (پرش) کنیم از این متد استفاده می شود.>db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)مثال>db.mycol.find({},{&quottitle&quot:1,_id:0}).limit(1).skip(1) {&quottitle&quot:&quotNoSQL Overview&quot}متد Sortبا استفاده از این متد مطابق دستور زیر می توان ترتیب قرارگیری document ها را براساس فیلد مورد نظر با مقادیر 1و 1- مشخص کرد. >db.COLLECTION_NAME.find().sort({KEY:1})مثال>db.mycol.find({},{&quottitle&quot:1,_id:0}).sort({&quottitle&quot:-1}) {&quottitle&quot:&quotTutorials Point Overview&quot} {&quottitle&quot:&quotNoSQL Overview&quot} {&quottitle&quot:&quotMongoDB Overview&quot}شاخص گذاری (Indexing)شاخص ها یا Index ها به منظور ایجاد query های کارامد تر استفاده می شوند. با تعریف index روی یک فیلد یا فیلدها، داده های collection براساس فیلد یا فیلد های index شده مرتب شده و در زمان بازیابی با سرعت بیشتزی query اجرا شده و در اختیار قرار می گیرد.متد createIndexبرای ایجاد یک index روی فیلد از دستور زیر استفاده می کنیم:>db.COLLECTION_NAME.createIndex({KEY:1})مثال>db.mycol.createIndex({&quottitle&quot:1}) { &quotcreatedCollectionAutomatically&quot : false, &quotnumIndexesBefore&quot : 1, &quotnumIndexesAfter&quot : 2, &quotok&quot : 1 }نکته: برای تعریف همزمان چند فیلد به صورت index به صورت زیر عمل میکنیم:>db.mycol.createIndex({&quottitle&quot:1,&quotdescription&quot:-1})متد dropIndexبرای حذف یک index از این متد استفاده می شود.>db.COLLECTION_NAME.dropIndex({KEY:1})مثال> db.mycol.dropIndex({&quottitle&quot:1}) { &quotok&quot : 0, &quoterrmsg&quot : &quotcan't find index with key: { title: 1.0 }&quot, &quotcode&quot : 27, &quotcodeName&quot : &quotIndexNotFound&quot }متد dropIndexesاین متد چند index را به صورت همزمان حذف می کند.>db.COLLECTION_NAME.dropIndexes()مثال>db.mycol.dropIndexes({&quottitle&quot:1,&quotdescription&quot:-1}) { &quotnIndexesWas&quot : 2, &quotok&quot : 1 }متد getIndexesبرای دریافت index های یک collection از این متد استفاده می شود.db.COLLECTION_NAME.getIndexes()مثال> db.mycol.getIndexes() [ { &quotv&quot : 2, &quotkey&quot : { &quot_id&quot : 1 }, &quotname&quot : &quot_id_&quot, &quotns&quot : &quottest.mycol&quot }, { &quotv&quot : 2, &quotkey&quot : { &quottitle&quot : 1, &quotdescription&quot : -1 }, &quotname&quot : &quottitle_1_description_-1&quot, &quotns&quot : &quottest.mycol&quot } ]این سه بخش مقدمه ای بود بر MongoDB که امیدوارم مفید بوده باشه. با آرزوی موفقیت.