در دو بخش قبلی مفاهیم و دستورات مقدماتی MongoDB را بررسی کردیم. در این بخش به دستورات کمی advanced تر در MongoDB می پردازیم.
به معنای محدودیت فیلدها در document های حاصل از نتیجه select در خروجی است.
متد find یک پارامتر اختیاری ورودی دیگر که لیستی از فیلد هایی است که باید در خروجی نمایش داده شوند یا نمایش داده نشوند را دریافت می کند. این پارمتر ها با key که نام فیلد مورد نظر و value صفر یا یک مشخص می شود. دستور زیر شکل کلی projection را در MongoDB نمایش می دهد:
>db.COLLECTION_NAME.find({},{KEY:1})
مثال
>db.mycol.find({},{"title":1,_id:0}) {"title":"MongoDB Overview"} {"title":"NoSQL Overview"} {"title":"Tutorials Point Overview"}
نکته: باید دقت داشت که id_ همواره در خروجی نمایش داده می شود. برای عدم نمایش id_ باید مقدار آن را در projection برابر صفر قرار داد.
برای دریافت و نمایش تعداد خاصی از document های حاصل از select از این متد استفاده می شود.
>db.COLLECTION_NAME.find().limit(NUMBER)
مثال
>db.mycol.find({},{"title":1,_id:0}).limit(2) {"title":"MongoDB Overview"} {"title":"NoSQL Overview"}
برای اینکه از تعداد خاصی از document های حاصل از select چشم پوشی (پرش) کنیم از این متد استفاده می شود.
>db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
مثال
>db.mycol.find({},{"title":1,_id:0}).limit(1).skip(1) {"title":"NoSQL Overview"}
با استفاده از این متد مطابق دستور زیر می توان ترتیب قرارگیری document ها را براساس فیلد مورد نظر با مقادیر 1و 1- مشخص کرد.
>db.COLLECTION_NAME.find().sort({KEY:1})
مثال
>db.mycol.find({},{"title":1,_id:0}).sort({"title":-1}) {"title":"Tutorials Point Overview"} {"title":"NoSQL Overview"} {"title":"MongoDB Overview"}
شاخص ها یا Index ها به منظور ایجاد query های کارامد تر استفاده می شوند. با تعریف index روی یک فیلد یا فیلدها، داده های collection براساس فیلد یا فیلد های index شده مرتب شده و در زمان بازیابی با سرعت بیشتزی query اجرا شده و در اختیار قرار می گیرد.
برای ایجاد یک index روی فیلد از دستور زیر استفاده می کنیم:
>db.COLLECTION_NAME.createIndex({KEY:1})
مثال
>db.mycol.createIndex({"title":1}) { "createdCollectionAutomatically" : false, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 }
نکته: برای تعریف همزمان چند فیلد به صورت index به صورت زیر عمل میکنیم:
>db.mycol.createIndex({"title":1,"description":-1})
برای حذف یک index از این متد استفاده می شود.
>db.COLLECTION_NAME.dropIndex({KEY:1})
مثال
> db.mycol.dropIndex({"title":1}) { "ok" : 0, "errmsg" : "can't find index with key: { title: 1.0 }", "code" : 27, "codeName" : "IndexNotFound" }
این متد چند index را به صورت همزمان حذف می کند.
>db.COLLECTION_NAME.dropIndexes()
مثال
>db.mycol.dropIndexes({"title":1,"description":-1}) { "nIndexesWas" : 2, "ok" : 1 }
برای دریافت index های یک collection از این متد استفاده می شود.
db.COLLECTION_NAME.getIndexes()
مثال
> db.mycol.getIndexes() [ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "test.mycol" }, { "v" : 2, "key" : { "title" : 1, "description" : -1 }, "name" : "title_1_description_-1", "ns" : "test.mycol" } ]
این سه بخش مقدمه ای بود بر MongoDB که امیدوارم مفید بوده باشه. با آرزوی موفقیت.