با عرض سلام و وقت بخیر خدمت کاربران محترم سایت ویرگول، در این مقاله آموزشی که چکیده آموزش مونگودبی از سایت tutorialspoint بهمراه مطالب تکمیلی تر , سعی شده یک آموزش کاربردی و پروژه محور از مونگودبی ارایه گردد.ایده این سری مقاله های آموزشی از این موضوع سرچشمه می گیرد که بخشی از خوانندگان وجود دارد که به محتوای نوشتاری آنلاین بهتر پاسخ می دهند و ترجیج می دهند مهارت های جدید را به سرعت از طریق خواندن افزایش دهند.این سری اموزش ها با ارایه اولین پکیج آموزشی در خصوص مانگودبی آغاز می شود که انتظار می رود با واکنش مثبت کاربران همراه شود.
توجه: این مقاله به مرور زمان، ویرایش و یا تکمیل میشود!
تقاضا: در صورتی که با مشکل تایپی، دستوری و یا مفهومی در این مقاله برخورد کردید، از شما دوست عزیز و گرامی، صمیمانه تقاضا میکنم که اینجانب را مطلع کرده، تا نسبت به تصحیح و یا تکمیل آن، در اسرع وقت، اقدام نمایم. با کمال تشکر جواد جهانگیری
شماره تلفن همراه: 09149431772
نشانی پست الکترونیکی: javad.jahangiri.niopdc@gmail.com
فیلمهای آموزشی در آپارات:جواد جهانگیری (CTO) - آپارات
فیلم آموزشی در یوتویب: javad jahangiri - YouTube
نسخه مقاله: ۱.۱ - تاریخ بروزرسانی: 1400/09/09
مونگو یک دیتابیس اوپن سورس و NoSQL می باشد که با زبان C++ برنامه نویسی شده است ما در این اموزش تصمیم داریم بری مفاهیم پایه ای مونگودبی تمرکز داشته باشیم و شما را در ایجاد و استقرار یک پایگاه داده مقایس پذیر و با پرفورمانس بالا کمک کنیم
این آموزش برای برنامه نویس های که در سطح پیشرفته می باشند طراحی شده است که می خواهند با بیان ساده و آسان با پایگاه داده مونگو دبی آشنا شوند در پایان این سری از اموزش ها شما به سطح متوسطی از تسلط بر روی این پایگاه داده دست خواهید یافت
برای این اموزش می بایستی یک درک کلی از مفاهیم پایگاه داده را داشته باشید چون در این اموزش ما قصد داریم پایگاه داده ای با کارایی بالا ایجاد کنیم
مونگودبی یک پایگاه داده مستند گرا و چند پلتفرمی است که عملکرد بالا ، در دسترس بودن بالا و مقیاس پذیری آسان را ارائه می دهد و مونگو دبی روی مفهموم مجموعه و سندکار می کند
پایگاه داده یک کانتینر فیزیکی برای مجموعه ای از داده ها می باشد. هر پایگاه داده مجموعه فایلهای خاص خود را در سیستم فایل دخیره می کند هر سرور دیتابیس مونگودبی معمولا شامل چندین دتیابیس می باشد
کالکشن در مونگودبی گروه از مستندات مونگودبی می باشد در حقیقت یک کالکشن معادل مفهموم جدول در در دتیابیس های رابطه ای می باشد .هر کالکشن در یک دتیابیس مونگودبی قرار می گیرد و اجباری نیست که کالکشن ها اسکیماهای یکسان داشته باشند .سندهای موجود در هر کالکشن می تواند فیلدهای متفاوتی داشته باشد .بطور معمول ،همه اسناد موجود در یک کالکشن دارای اهداف مشابه و یا مرتبط به هم می باشند
هر سند مجموعه ای از جفت های key-value می باشد.اسناد دارای اسیکما داینامک هستند .اسکیمای پویا به این معنی می باشد که اسناد موجود در یک کالکشن نیازی به مجموعه یکسانی از فیلدها و ساختار ندارند و فیلدهای مشترک در اسناد یک کالکشن ممکن است انواع مختلفی از داده ها را در خود جای دهد
جدول زیر رابطه اصطلاحات RDBMS با MongoDB را نشان می دهد.
مثال زیر ساختار سند یک وب سایت وبلاگی را نشان می دهد ، که به سادگی یک جفت مقدار کلید جدا شده با کاما است.
{ _id: ObjectId(7df78ad8902c) title: 'MongoDB Overview', description: 'MongoDB is no sql database', by: 'tutorials point', url: 'http://www.tutorialspoint.com', tags: ['mongodb', 'database', 'NoSQL'], likes: 100, comments: [ { user:'user1', message: 'My first comment', dateCreated: new Date(2011,1,20,2,15), like: 0 }, { user:'user2', message: 'My second comments', dateCreated: new Date(2011,1,25,7,45), like: 5 } ] }
ای دی _id یک عدد هگز دسیمال 12 بایتی است که منحصر به فرد بودن هر سند را تضمین می کند در هنگام درج یک سند می توانیم id ان را ارایه کنیم و لی اگر ارایه نشود خود مونگودبی یک شناسه منحصر به فرد بریا هر سند ثبت می کند . این 12 بایت ابتدا 4 بایت ان برای (timestamp) ،سه بایت بعدی برای شناسه ماشین (machine id) ، دو بایت بعدی برای شناسه پروسس (process id ) مونگودبی و 3 بایت باقی مانده اخر برای مقدار افزایشی (simple incremental VALUE) می باشد
هر پایگاه داده رابطه ای معمولا داری یه اسکیمای می باشد که شامل جداول و ارتباط بین این جداول را نشان می دهد در حالی که در مونگودبی (MongoDB) ،مفهومی از رابطه وجود ندارد
مونگودبی در حقیقت یک پایگاه داده بر پایه اسناد می باشد که در آن یک کالکشن می تواند مستندات مختلفی در خود نگهداری کند. تعداد فیلدها ،محتوا و اندازه سند می تواند از سندی به سند دیگر متفاوت باشد.
مونگودبی با استفاده از یک زبان پرس و جوی مبتنی بر اسناد که تقریبا به اندازه SQL قوی است ,از کوری های پویا پشتیبانی می کند
مقیاس بندی در مونگودبی خیلی راحت است
داده برای اساس فرمت json ذخیره می شود
همسان سازی اتوماتیک داده ها و بالاترین سطح در دسترس بودن داده ها را پشتیبانی می کند
که امکان مقایس پذیری افقی automation of horizontal scaling به مونگودبی می دهد
یکی از ویژگی های خوب MongoDB این است که به روزرسانی ها می توانند "در محل" اتفاق بیفتند - پایگاه داده نیازی به اختصاص و نوشتن یک نسخه کامل جدید از آبجکت را ندارد.
به مجموعه از داده ها از منابع متعدد که برای توزیع ,اشتراک گذاری سازماندهی شده باشد دیتاهاب گفته می شود
اجازه دهید نحوه نصب MongoDB را در ویندوز ببینیم.
برای نصب MongoDB بر روی ویندوز ، ابتدا آخرین نسخه MongoDB را دانلود کنید
جزئیات مورد نیاز را وارد کنید ، برگه Server را انتخاب کنید ، در آن می توانید نسخه MongoDB ، سیستم عامل و بسته بندی را به صورت زیر انتخاب کنید:(پیشنهاد می شود نسخه کامیونیتی برای شروع یادگیری انتخاب شود)
اکنون فایل دانلود شده را نصب کنید ، به طور پیش فرض ، در پوشه زیر نصب می شود
C:\Program Files\.
نکته
در مراحل نصب با عنایت به اینکه شروع به دانلود MongoDB Compass می کند و از سوی در حدود 160 مگابایت فایل باید دانلود کند و از طرف دیگر این سایت در ایران فیلتر می باشد در حین نصب می بایستی فیلتر شکن فعال باشد و اگر نتوانست در حین مراحل نصب MongoDB Compass دانلود و نصب کند می توانید بصورت دستی ابتدا خودتان از مسیر ذیل این فایل را دانلود و نصب کنید و سپس مراحل نصب سرور کامیونیتی مونگودبی را دوباره انجام دهید و در مراحل نصب تیک MongoDB Compass را بردارید
نکته
برای اینکه برنامه MongoDB Compass کار کند حتما می بایستی بر روی سیستم عامل خودتان Java SE Development Kit نصب شده باشد اگر نصب نیست می توانید از طریق سایت های ایرانی دانلود و نصب کنید
نمایی از برنامه MongoDB Compass را مشاهده می کنید:
مونگودبی برای ذخیره فایل های خود یک پوشه نیاز دارد مسیر پیش فرض برای ذخیره داده در سیستم عامل های ویندوز C:\data\db می باشد . بنابراین باید این پوشه را با استفاده Command Prompt ایجاد کنیم برای این کار دستورات زیر را در ترمینال وارد می کنیم:
C:\>md data C:\md data\db
سپس باید تنظیم dbpath را در فهرست ایجاد شده در فایل mongod.exe را می بایستی تعیین کنید. برای همین ، دستورات زیر را صادر کنید
C:\Users\XYZ>d:cd C:\Program Files\MongoDB\Server\4.2\bin C:\Program Files\MongoDB\Server\4.2\bin>mongod.exe --dbpath "C:\data"
این پیام منتظر اتصالات را در خروجی کنسول نشان می دهد و روند mongod.exe با موفقیت اجرا می شود. اکنون برای اجرای MongoDB ، باید خط فرمان دیگری را باز کرده و دستور زیر را صادر کنید.
C:\Program Files\MongoDB\Server\4.2\bin>mongo.exe MongoDB shell version v4.2.1 connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("4260beda-f662-4cbe-9bc7-5c1f2242663c") } MongoDB server version: 4.2.1 >
این نشان می دهد که MongoDB با موفقیت نصب شده و اجرا می شود. دفعه بعد که MongoDB را اجرا می کنید ، فقط باید دستورات را صادر کنید
C:\Program Files\MongoDB\Server\4.2\bin>mongod.exe --dbpath "C:\data" C:\Program Files\MongoDB\Server\4.2\bin>mongo.exe
پیشنهاد می شود برای سهولت دسترسی به فایل اجرایی پایگاه داده مونگودبی از متغییر محلی ویندوز به متغییر path مسیر دسترسی به پایگاه داده مانگودبی اضافه شود
C:\Program Files\MongoDB\Server\4.4\bin
برای دریافت لیستی از دستورات ، db.help () را در کلاینت MongoDB تایپ کنید. با این کار لیستی از دستورات به شما نشان داده می شود که در تصویر زیر نشان داده شده است.
برای دریافت آمار در مورد سرور MongoDB ، دستور ()db.stats را در سرویس گیرنده MongoDB تایپ کنید. این نام پایگاه داده ، تعداد مجموعه و اسناد موجود در پایگاه داده را نشان می دهد. خروجی فرمان در تصویر زیر نشان داده شده است.
داده های موجود در MongoDB دارای اسکیمای انعطاف پذیر است. اسناد موجود در یک کالکشن نیازی به مجموعه ای مشابه از فیلدها یا ساختار را ندارند ، فیلدهای معمولی در اسناد یک کالکشن ممکن است انواع مختلفی از داده ها را در خود جای دهند.
مونگودبی دو نوع مدل داده را ارائه می دهند:مدل Embedded و مدل داده Normalized بر اساس الزامات ,هنگام تهیه سند خود می توانید از هر یک از مدل ها استفاده کنید
در این مدل ، می توانید تمام داده های مرتبط را در یک سند واحد (embed) کنید ، همچنین به عنوان مدل داده غیر عادی (de-normalized) شناخته می شود
به عنوان مثال ، فرض کنید که ما اطلاعات کارکنان را در سه سند مختلف یعنی Personal_details ، Contact و Address دریافت می کنیم ، می توانید هر سه سند را در یک سند جاسازی کنید ، همانطور که در زیر نشان داده شده است :
{ _id: , Emp_ID: "10025AE336" Personal_details:{ First_Name: "Radhika", Last_Name: "Sharma", Date_Of_Birth: "1995-09-26" }, Contact: { e-mail: "radhika_sharma.123@gmail.com", phone: "9848022338" }, Address: { city: "Hyderabad", Area: "Madapur", State: "Telangana" } }
در این مدل ، می توانید اسناد فرعی را در سند اصلی با استفاده از منابع ارجاع دهید. به عنوان مثال ، می توانید سند فوق را در مدل نرمال شده دوباره بنویسید:
{ _id: <ObjectId101>, Emp_ID: "10025AE336" }
Personal_details:
{ _id: <ObjectId102>, empDocID: " ObjectId101", First_Name: "Radhika", Last_Name: "Sharma", Date_Of_Birth: "1995-09-26" }
{ _id: <ObjectId103>, empDocID: " ObjectId101", e-mail: "radhika_sharma.123@gmail.com", phone: "9848022338" }
{ _id: <ObjectId104>, empDocID: " ObjectId101", city: "Hyderabad", Area: "Madapur", State: "Telangana" }
فرض کنید یک مشتری برای وبلاگ خود به طراحی پایگاه داده نیاز دارد:
در اسکیمای RDBMS ، طراحی برای الزامات فوق حداقل سه جدول خواهد داشت.
در حالی که در اسکیمایMongoDB ، ما یک کالکشن (collection) پست (post) با ساختار زیر خواهد بود:
{ _id: POST_ID title: TITLE_OF_POST, description: POST_DESCRIPTION, by: POST_BY, url: URL_OF_POST, tags: [TAG1, TAG2, TAG3], likes: TOTAL_LIKES, comments: [ { user:'COMMENT_BY', message: TEXT, dateCreated: DATE_TIME, like: LIKES }, { user:'COMMENT_BY', message: TEXT, dateCreated: DATE_TIME, like: LIKES } ] }
بنابراین هنگام نمایش داده ها ، در RDBMS شما باید به سه جدول بپیوندید و در MongoDB ، داده ها فقط از یک کالکشن (collection) نشان داده می شوند.
در این فصل نحوه ایجاد پایگاه داده در MongoDB را خواهیم دید.
مونگودبی از DATABASE_NAME برای ایجاد پایگاه داده استفاده می کند ای دستور یک دیتابیس جدید می سازد در صورتی که وجود نداشته باشد و درغیر اینصورت اطلاعات دیتابیس موجود را برگشت می دهد
شکل دستوری استفاده از دستور use DATABASE به شرح زیر است:
use DATABASE_NAME
اگر می خواهید از پایگاه داده ای با نام <mydb> استفاده کنید ، عبارت DATABASE به شرح زیر است:
>use mydb switched to db mydb
برای بررسی پایگاه داده انتخاب شده خود ، از دستور db استفاده کنید:
>db mydb
اگر می خواهید لیست پایگاه های داده خود را بررسی کنید ، از دستور show dbs استفاده کنید:
>show dbs local 0.78125GB test 0.23012GB
پایگاه داده ایجاد شده شما (mydb) در لیست موجود نیست. برای نمایش پایگاه داده ، باید حداقل یک سند را در آن وارد کنید.
>db.movie.insert({"name":"tutorials point"}) >show dbs local 0.78125GB mydb 0.23012GB test 0.23012GB
در پایگاه داده MongoDB دیتابیس پیش فرض test می باشد. اگر هیچ پایگاه داده ای ایجاد نکرده اید ، collections ها در پایگاه داده test ذخیره می شوند.
در این فصل نحوه drop کردن پایگاه داده با استفاده از فرمان MongoDB را خواهیم دید.
دستور ()db.dropDatabase برای حذف کردن پایگاه داده موجود استفاده می شود.
شکل دستوری ()dropDatabase به شرح زیر است:
db.dropDatabase()
با این کار پایگاه داده انتخاب شده حذف می شود. اگر هیچ پایگاه داده ای را انتخاب نکرده اید ، پایگاه داده پیش فرض "test" را حذف می کند.
>show dbs local 0.78125GB mydb 0.23012GB test 0.23012GB >
اگر می خواهید پایگاه داده جدید <mydb> را حذف کنید ، دستور ()dropDatabase به شرح زیر است:
>use mydb switched to db mydb >db.dropDatabase() >{ "dropped" : "mydb", "ok" : 1 } >
اکنون لیست پایگاه های داده را بررسی کنید.
>show dbs local 0.78125GB test 0.23012GB >
در این فصل نحوه ایجاد Collection با استفاده از MongoDB را خواهیم دید.
MongoDB db.createCollection(name, options) is used to create collection.
db.createCollection(name, options)
در این دستور ، name نام کالکشن است که باید ایجاد شود. Options یک سند است و برای تعیین پیکربندی کالکشن ها مورد استفاده قرار می گیرد
پارامتر Options اختیاری است ، بنابراین باید فقط نام کالکشن را مشخص کنید. در زیر لیستی از گزینه هایی است که می توانید استفاده کنید:
هنگام درج سند ، MongoDB ابتدا فیلد اندازه capped collection را بررسی می کند ، سپس max field را بررسی می کند.
شکل دستوری روش ()createCollection بدون options به شرح زیر است -
>use test switched to db test >db.createCollection("mycollection") { "ok" : 1 } >
با استفاده از دستور show collections می توانید کالکشن ایجاد شده را بررسی کنید:
>show collections mycollection system.indexes
مثال زیر نحو متد ()createCollection را با چند گزینه مهم نشان می دهد -
> db.createCollection("mycol", { capped : true, autoIndexID : true, size : 6142800, max : 10000 } ){ "ok" : 0, "errmsg" : "BSON field 'create.autoIndexID' is an unknown field.", "code" : 40415, "codeName" : "Location40415" } >
در MongoDB ، نیازی به ایجاد کالکشن ندارید. هنگام وارد کردن سند ، MongoDB به طور خودکار مجموعه ایجاد می کند
>db.tutorialspoint.insert({"name" : "tutorialspoint"}) WriteResult({ "nInserted" : 1 }) >show collections mycol mycollection system.indexes tutorialspoint >
در مثال بالا توجه کنید db.tutorialspoint.insert اسم کالکشن که باید ایجاد شود tutorialspoint می باشد که شامل سندی است که در ان فیلد name با مقدار tutorialspoint می باشد
دستور ()db.collection.drop در MongoDB برای حذف یک مجموعه از پایگاه داده استفاده می شود.
یک مجموعه یا نمایش را از پایگاه داده حذف می کند.
این متد همچنین هر شاخصی را که مربوط به مجموعه پاک شده است را نیز حذف می کند.
سینتکس
دستورالعمل پایه دستور() drop در MongoDB به شرح زیر است:
1
db.COLLECTION_NAME.drop()
مثال
ابتدا باید، مجموعه های موجود را در پایگاه داده mydb بررسی کنید.دستور آن به شکل زیر است :
>use mydb switched to db mydb >show collections mycol mycollection system.indexes tutorialspoint
>
سپس مجموعه mycollection را حذف نمایید:
>db.mycollection.drop() true >
مجددا لیستی از مجموعه ها را در پایگاه داده چک کنید.
>show collections mycol system.indexes tutorialspoint >
اگر مجموعه انتخاب شده با موفقیت حذف شود، متد ()drop مقدار درست را بازگرداند، در غیر اینصورت، مقدار غلط برگشت داده خواهد شد.
این روش بر قفل نوشتن بر روی پایگاه داده آسیب می زند و دیگر عملیات نوشتن را تا زمانی که تمام نشده است، مسدود کند.
حذف و ایجاد مجموعه در MongoDB از اعمال پر کاربرد در این پایگاه داده می باشد.امیدوارم از مطالب مذکور بهره کافی را برده باشید با ما همراه باشید تا در جلسه بعد انواع داده ها را در MongoDB بشناسید.
MongoDB از بسیاری از انواع داده پشتیبانی می کند. برخی از آنها در زیر لیست شده اند :
String : این نوع داده معمولی است که برای ذخیره داده ها استفاده می شود. رشته در MongoDB باید توسط UTF-8 معتبر باشد.
Integer : این نوع برای ذخیره یک مقدار عددی استفاده می شود. Integer می تواند ۳۲ بیتی یا ۶۴ بیتی بسته به سرور شما باشد.
Boolean : این نوع برای ذخیره یک مقدار (true / false) استفاده می شود.
Double : این نوع برای ذخیره مقادیر شناور و اعشاری استفاده می شود.
Min/ Max keys : این نوع برای مقایسه مقادیر علیه کمترین و بالاترین عناصر BSON استفاده می شود.
Arrays : این نوع برای ذخیره آرایه ها یا لیست ها یا مقادیر متعدد در یک کلید استفاده می شود.
Timestamp-ctimestamp : می تواند برای ضبط هنگامی که یک سند اصلاح شده یا اضافه شده است مفید باشد.
Object : این نوع داده برای اسناد جاسازی شده استفاده می شود.
Null : این نوع برای ذخیره یک مقدار Null استفاده می شود.
Symbol : این نوع داده با یک رشته به طور یکسان استفاده می شود. با این حال، به طور کلی برای زبان هایی که از یک نوع نماد خاص استفاده می کنند، استفاده می شود.
date : این نوع داده برای ذخیره تاریخ یا زمان فعلی در فرمت زمان بندی یونیکس استفاده می شود. شما می توانید زمان تاریخ خود را با ایجاد شیء تاریخ و گذراندن روز، ماه، سال به آن مشخص کنید.
Object ID : این نوع داده برای ذخیره شناسه سند استفاده می شود.
داده باینری : این نوع داده برای ذخیره اطلاعات باینری استفاده می شود.
Code : این نوع داده برای ذخیره ی جاوا اسکریپت در سند استفاده می شود.
عبارت Regular : این نوع داده برای ذخیره عبارات منظم استفاده می شود.
۱۵ نوع از انواع داده های MongoDB که در این پایگاه داده پشتیبانی می شدند را نام بردیم. درج سند در MongoDB آموزش بعدی ما خواهد بود،با ما همراه باشید.
برای ساخت سند باید از دستور insert استفاده شود:
برای قرار دادن داده ها در مجموعه MongoDB، شما باید از ()insert یا ()save در MongoDB استفاده کنید.
دستورالعمل اولیه دستور ()insert به شرح زیر است:
db.COLLECTION_NAME.insert(document) >db.mycol.insert({ _id: ObjectId(7df78ad8902c), title: 'MongoDB Overview', description: 'MongoDB is no sql database', by: 'tutorials point', url: 'http://www.tutorialspoint.com', tags: ['mongodb', 'database', 'NoSQL'], likes: 100 })
در اینجا mycol نام مجموعه ما است، همانطور که در فصل قبل ایجاد کردیم. اگر مجموعه موجود در پایگاه داده وجود نداشته باشد، MongoDB این مجموعه را ایجاد می کند و سپس یک سند را وارد آن می کند.
در سند وارد شده، اگر id parameter_ را مشخص نکنیم،مانگو ObjectId منحصر به فرد را برای این سند اختصاص می دهد.
id _ از ۱۲ بایت هگزادسیمال منحصر به فرد برای هر سند در یک مجموعه استفاده می کند.
۱۲ بایت به صورت زیر تقسیم می شوند:
مثال:
_id: ObjectId(4 bytes timestamp, 3 bytes machine id, 2 bytes process id, 3 bytes incrementer)
برای قرار دادن اسناد متعدد در یک کوئری تنها می توانید یک آرایه ای از اسناد را در دستور insert () منتقل کنید.
>db.post.insert([ { title: 'MongoDB Overview', description: 'MongoDB is no sql database', by: 'tutorials point', url: 'http://www.tutorialspoint.com', tags: ['mongodb', 'database', 'NoSQL'], likes: 100 }, { title: 'NoSQL Database', description: "NoSQL database doesn't have tables", by: 'tutorials point', url: 'http://www.tutorialspoint.com', tags: ['mongodb', 'database', 'NoSQL'], likes: 20, comments: [ { user:'user1', message: 'My first comment', dateCreated: new Date(2013,11,10,2,35), like: 0 } ] } ])
در نسخه جدید ۳٫۲ وارد کردن اسناد چندگانه در MongoDB نیز افزوده شده…
با دستور ()db.collection.insertMany می توانید چندین اسناد را در مجموعه قرار دهید. و بدی صورت آرایه ای از مدارک را با این روش انتقال دهید.
برای وارد کردن سند می توانید از(سند) db.post.save نیز استفاده کنید. اگر _id را در سند مشخص نکنید، روش () Save همانند روش () insert کار خواهد کرد.
استفاده از متد ()find :
برای پرس و جو داده ها از مجموعه MongoDB، شما باید از متد () find در MongoDB استفاده کنید.
سینتکس اصلی متد ()find به شرح زیر است:
>db.COLLECTION_NAME.find()
برای نمایش نتایج در قالب فرمت شده، شما می توانید از متد ()pretty با سینتکس زیر استفاده کنید :
>db.mycol.find().pretty()
مثال
>db.mycol.find().pretty()
{ "_id": ObjectId(7df78ad8902c), "title": "MongoDB Overview", "description": "MongoDB is no sql database", "by": "tutorials point", "url": "http://www.tutorialspoint.com", "tags": ["mongodb", "database", "NoSQL"], "likes": "100" } >
به غیر از متد ()find ، متد ()findOne نیز وجود دارد که تنها یک سند را باز می گرداند.
برای کوئری سند بر اساس برخی شرایط، می توانید از عملیات زیر استفاده کنید.
در متد () find اگر کلید های چندگانه را توسط علامت ‘,’ از هم جدا کنید، در MongoDB مشابه عملگر AND عمل میکند.
مثال :
>db.mycol.find( { $and: [ {key1: value1}, {key2:value2} ] } ).pretty()
برای کوئری مدارک بر اساس شرایط OR، شما باید از کلمه کلیدی OR$ استفاده کنید.در مثال زیر سینتکس OR نشان داده شده است :
>db.mycol.find( { $or: [ {key1: value1}, {key2:value2} ] } ).pretty()
مثال زیر همه آموزش هایی که توسط ‘tutorials point’ نوشته شده یا عنوان آن ‘MongoDB Overview’ را نشان می دهد.
>db.mycol.find({$or:[{"by":"tutorials point"},{"title": "MongoDB Overview"}]}).pretty() { "_id": ObjectId(7df78ad8902c), "title": "MongoDB Overview", "description": "MongoDB is no sql database", "by": "tutorials point", "url": "http://www.tutorialspoint.com", "tags": ["mongodb", "database", "NoSQL"], "likes": "100" } >
مثال زیر اسنادی را به ما نشان می دهد که مقدار likes بالاتر از ۱۰ است و عنوان آنها ‘MongoDB Overview’ یا ‘tutorials point’ می باشد.
‘where likes>10 AND (by = ‘tutorials point’ OR title = ‘MongoDB Overview’)’سینتکس در SQL
>db.mycol.find({"likes": {$gt:10}, $or: [{"by": "tutorials point"}, {"title": "MongoDB Overview"}]}).pretty() { "_id": ObjectId(7df78ad8902c), "title": "MongoDB Overview", "description": "MongoDB is no sql database", "by": "tutorials point", "url": "http://www.tutorialspoint.com", "tags": ["mongodb", "database", "NoSQL"], "likes": "100" } >
توجه داشته باشید متد ()find تمام اسناد را به صورت غیر ساختاری نمایش می دهد و برای نمایش نتایج در قالب فرمت شده، شما باید از متد ()pretty استفاده نمایید.
تدهای ()update و ()save در MongoDB برای به روز رسانی سند در یک مجموعه استفاده می شود.
متد ()update مقادیر موجود در سند موجود را بروز رسانی می کند در حالی که متد ()Save جایگزین سند موجود با سند منتقل شده در روش ()save می شود.
متد ()update مقادیر موجود در سندهای موجود را بروز رسانی می کند.
سینکس اصلی متد ()update به صورت زیر است :
>db.COLLECTION_NAME.update(SELECTION_CRITERIA, UPDATED_DATA)
مثال
فرض کنید مجموعه mycol دارای داده های زیر است.
{ "_id" : ObjectId(5983548781331adf45ec5), "title":"MongoDB Overview"} { "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"} { "_id" : ObjectId(5983548781331adf45ec7), "title":"Tutorials Point Overview"}
مثال زیر تایتل جدید سندها را با عنوان ‘New MongoDB Tutorial’ برای سندهایی که تایتل آنها ‘MongoDB Overview’ است تنظیم می کند.
>db.mycol.update({'title':'MongoDB Overview'},{$set:{'title':'New MongoDB Tutorial'}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) >db.mycol.find() { "_id" : ObjectId(5983548781331adf45ec5), "title":"New MongoDB Tutorial"} { "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"} { "_id" : ObjectId(5983548781331adf45ec7), "title":"Tutorials Point Overview"} >
به طور پیش فرض، MongoDB فقط یک سند تک را بروز رسانی می کند. برای بروز رسانی چندین اسناد، شما باید پارامتر ‘multi’ را به درست تنظیم کنید.
>db.mycol.update({'title':'MongoDB Overview'}, {$set:{'title':'New MongoDB Tutorial'}},{multi:true})
متد ()save سند موجود را با سند جدیدی که در روش ()save منتقل شده است جایگزین می کند.
سینتکس اصلی متد ()save در MongoDB در زیر نشان داده شده است :
>db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA})
مثال
در مثال زیر سند با آیدی_ ‘۵۹۸۳۵۴۸۷۸۱۳۳۱adf45ec5 جایگزین خواهد شد.
>db.mycol.save( { "_id" : ObjectId(5983548781331adf45ec5), "title":"Tutorials Point New Topic", "by":"Tutorials Point" } ) >db.mycol.find() { "_id" : ObjectId(5983548781331adf45ec5), "title":"Tutorials Point New Topic", "by":"Tutorials Point"} { "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"} { "_id" : ObjectId(5983548781331adf45ec7), "title":"Tutorials Point Overview"} >
بروز رسانی سند در MongoDB توسط متدهای ()update و ()save صورت می پذیرد.ولی هرکدام ازین متدها نیز برای کاربرد خاصی استفاده می شوند.امیدوارم از مطالب ذکر شده بهره کافی را برده باشید.در جلسه بعدی حذف سند در MongoDB آموزش داده خواهد شد.
همانطور که گفته شد متد ()remove در MongoDB برای حذف یک سند از مجموعه استفاده می شود. این متد دو پارامتر را می پذیرد.
یکی از آن ها معیارهای حذف است و دومی پرچم justOne است.
معیار حذف (اختیاری) : معیارهای حذف با توجه به اسناد حذف خواهند شد.
justOne (اختیاری) : اگر مقدار درست یا ۱ تنظیم شود،تنها یک سند را حذف کنید.
>db.COLLECTION_NAME.remove(DELLETION_CRITTERIA)
فرض کنید مجموعه mycol دارای داده های زیر است.
{ "_id" : ObjectId(5983548781331adf45ec5), "title":"MongoDB Overview"} { "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"} { "_id" : ObjectId(5983548781331adf45ec7), "title":"Tutorials Point Overview"}
مثال زیر تمام اسنادهایی را که عنوان آن ها “Overview MongoDB” است حذف می کند.
>db.mycol.remove({'title':'MongoDB Overview'}) >db.mycol.find() { "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"} { "_id" : ObjectId(5983548781331adf45ec7), "title":"Tutorials Point Overview"} >
اگر چندین رکورد وجود داشته باشد و شما بخواهید اولین رکورد را حذف نمایید،باید پارامتر justOne را در متد ()remove تنظیم کنید.
>db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)
اگر معیارهای حذف را مشخص نکنید، MongoDB تمام مدارک را از مجموعه حذف خواهد کرد. و معادل دستور فرمان SQL است.
>db.mycol.remove() >db.mycol.find() >
در MongoDB، طرح ریزی به معنی انتخاب اطلاعات لازم است تا انتخاب کل داده های یک سند.
یعنی اگر یک سند دارای ۵ فیلد باشد و شما بخواهید تنها همان ۳ را فیلد را نمایش دهید، پس بتوانید فقط ۳ فیلد را از آنها انتخاب کنید.
متد ()find در MongoDB قبلا توضیح داده شده و برای پرس و جو استفاده می شود.
این متد دو پارامتر اختیاری را می پذیرد که لیستی از فیلدهایی است که می خواهید آن ها را بازیابی کنید.
در MongoDB، هنگام اجرای متد ()find، تمام فیلدهای یک سند نمایش داده می شود.
برای محدود کردن آن، شما نیاز به تنظیم یک لیست از فیلدها با مقدار ۱ یا ۰٫ ۱ برای نشان دادن فیلد استفاده می شود در حالی که ۰ برای مخفی کردن فیلدها استفاده می شود.
سینتکس پایه متد ()find برای طرح ریزی به شرح زیر است:
>db.COLLECTION_NAME.find({},{KEY:1})
فرض کنید مجموعه mycol دارای داده های زیر است :
{ "_id" : ObjectId(5983548781331adf45ec5), "title":"MongoDB Overview"} { "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"} { "_id" : ObjectId(5983548781331adf45ec7), "title":"Tutorials Point Overview"}
مثال زیر، عنوان سند را هنگام جستجو در سند نمایش می دهد.
>db.mycol.find({},{"title":1,_id:0}) {"title":"MongoDB Overview"} {"title":"NoSQL Overview"} {"title":"Tutorials Point Overview"} >
نکته
در هنگام اجرای متد ()find ، فیلد _id همیشه نمایش داده شود، اگر شما این فیلد را نمی خواهید، باید آن را ۰ قرار دهید.
پرس و جو در MongoDB توسط متد ()find صورت می گیرد.در MongoDB، هنگامی که یک مجموعه را با استفاده از متد ()db.collection.find جستجو می کنید، می توانید مشخص کنید کدام فیلدها را که می خواهید برگردانید.همچنین شما می توانید این کار را با وارد کردن نام فیلد در پرس و جو و اضافه کردن ۱ یا ۰ در کنار آن انجام دهید تا مشخص شود آیا باید آن را بازگردانده شود یا خیر.
برای محدود کردن رکوردها در MongoDB، شما باید از متد ()Limit استفاده کنید. این متد یک آرگومان از نوع عددی را می پذیرد، که نشان دهنده تعداد اسنادی است که می خواهید نمایش داده شوند.
سینتکس پایه برای متد ()Limit به صورت زیر می باشد:
>db.COLLECTION_NAME.find().limit(NUMBER)
فرض کنید مجموعه myycol دارای داده های زیر است.
{ "_id" : ObjectId(5983548781331adf45ec5), "title":"MongoDB Overview"} { "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"} { "_id" : ObjectId(5983548781331adf45ec7), "title":"Tutorials Point Overview"}
در مثال زیر، هنگام جستجو در سند، تنها دو سند نمایش داده خواهد شد.
>db.mycol.find({},{"title":1,_id:0}).limit(2) {"title":"MongoDB Overview"} {"title":"NoSQL Overview"} >
گر شماره آرگومان را در متد ()Limit مشخص نکنید، تمام اسنادمجموعه نمایش داده می شود.
به غیر از متد ()Limit، یک متد دیگر ()skip وجود دارد که آرگومان از نوع عددی را می پذیرد و برای تعداد اسناد استفاده می شود.
سینتکس این متد به صورت زیر می باشد :
>db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
مثال
در مثال زیر تنها دومین سند نمایش داده می شود.
>db.mycol.find({},{"title":1,_id:0}).limit(1).skip(1) {"title":"NoSQL Overview"} >
توجه داشته باشید، مقدار پیش فرض در متد ()skip صفر است.هنگامی که ما یک مجموعه را فراخوانی می کنیم، همه اسناد موجود در آن را نمایش داده می شود. محدودیت برای بازیابی تعداد اسنادی است که ما نیاز داریم از آنها استفاده کنیم. ما می توانیم از متد limit در MongoDB برای مشخص کردن تعداد اسنادی که می خواهیم آن را بازگردانیم استفاده کنیم.محدودیت رکورد ها در MongoDB توسط توسط متدهای ()Limit و ()skip به پایان رسید در جلسه بعدی مرتب سازی رکورد ها در در MongoDB را آموزش خواهیم داد
برای مرتب کردن اسناد در MongoDB، شما باید از متد ()sort استفاده کنید. این متد یک سند حاوی لیستی از فیلدها همراه با دستور مرتب سازی آنها را می پذیرد. برای مشخص کردن مرتبه مرتب سازی ۱ و -۱ استفاده می شود. ۱ به منظور مرتب سازی صعودی استفاده می شود در حالی که ۱- برای ترتیب نزولی استفاده می شود.
هنگام مقایسه مقادیر انواع مختلف BSON،در MongoDB از ترتیب مقایسه زیر استفاده می شود( از کمترین به بالاترین):
MinKey (نوع داخلی)
Null
اعداد
نماد، رشته
هدف – شی
آرایه
BinData
ObjectId
بولین
تاریخ
Timestamp
عبارت منظم
MaxKey (نوع داخلی)
فرم اولیه sort بصورت زیر است :
{ $sort: { <field1>: <sort order>, <field2>: <sort order> ... } }
سینتکس متد ()sort در MongoDB به شرح زیر است :
>db.COLLECTION_NAME.find().sort({KEY:1})
فرض کنید مجموعه myycol دارای داده های زیر است.
{ "_id" : ObjectId(5983548781331adf45ec5), "title":"MongoDB Overview"} { "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"} { "_id" : ObjectId(5983548781331adf45ec7), "title":"Tutorials Point Overview"}
مثال زیر اسناد مرتب شده بر اساس عنوان(title) را در ترتیب نزولی به شما نشان می دهد.
>db.mycol.find({},{"title":1,_id:0}).sort({"title":-1}) {"title":"Tutorials Point Overview"} {"title":"NoSQL Overview"} {"title":"MongoDB Overview"} >
لطفا توجه داشته باشید اگر ترتیب صعودی یا نزولی بودن را مشخص نکنید، درنتیجه متد ()sort در MongoDB اسناد را به ترتیب صعودی نمایش می دهد.با ما همراه باشید تا در جلسه بعد فهرست کردن در MongoDB را فرا بگیرید.
ایندکسها در MongoDB تاثیر بسیاری در اجرای کوئریها دارند.بدون ایندکسها، MongoDB باید تمام سندهای یک مجموعه را برای انتخاب سندهایی که با عبارت کوئری مطابقت دارند، اسکن کند.این اسکن بسیار ناکارآمد است و در این حالت mongoDB به پردازش حجم بزرگی از دادهها نیاز دارد.
برای ساخت ایندکسها در MongoDB باید از متد ()createIndexاستفاده کنید.
سینتکس پایه متد ()createIndex به شکل زیر است:
>db.COLLECTION_NAME.createIndex({KEY:1})
در اینجا، key نام فیلدی است که میخواهید بر روی آن ایندکس بسازید و مقدار ۱ برای مرتب سازی بصورت صعودی است.
برای ساخت ایندکسها در MongoDB با مرتب سازی نزولی باید از مقدار ۱- استفاده کنید.
>db.mycol.createIndex({"title":1}) { "createdCollectionAutomatically" : false, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 } >
در متد ()createIndex برای ساخت ایندکس بر روی چندین فیلد، میتوانید چندین فیلد را به آن پاس دهید:
>db.mycol.createIndex({"title":1,"description":-1}) >
متد ()createIndex لیستی از گزینه ها را قبول میکند که در زیر آمدهاند:
همانطور که گفته شد Indexing در MongoDB بخش کوچکی از مجموعه دادهها را به شکل سادهای برای پیمایش، ذخیره میکنند.امیدوارم از مطالب ذکر شده بهره کافی را برده باشید با ما همراه باشید تا در جلسه بعد، توابع جمعی در MongoDB را آموزش ببینید.
شما می توانید با استفاده از روش dropIndex() یک شاخص خاص را حذف کنید.
سینتکس متد DropIndex به شرح ذیل می باشد:
>db.COLLECTION_NAME.dropIndex({KEY:1})
در اینجا کلید نام فایلی است که می خواهید ایندکس را روی آن ایجاد کنید و 1 برای ترتیب صعودی است. برای ایجاد ایندکس به ترتیب نزولی باید از -1 استفاده کنید.
مثال:
> db.mycol.dropIndex({"title":1}) { "ok" : 0, "errmsg" : "can't find index with key: { title: 1.0 }", "code" : 27, "codeName" : "IndexNotFound" }
نحو اصلی متد DropIndexes() به صورت زیر است:
>db.COLLECTION_NAME.dropIndexes()
مثال:
فرض کنید ما 2 شاخص در مجموعه mycol نامگذاری شده مانند شکل زیر ایجاد کرده ایم:
> db.mycol.createIndex({"title":1,"description":-1})
مثال زیر ایندکس های ایجاد شده در بالا از mycol را حذف می کند:
>db.mycol.dropIndexes({"title":1,"description":-1}) { "nIndexesWas" : 2, "ok" : 1 } >
این متد توضیحات تمامی ایندکس موجود در یک کالکشن را نمایش می دهد:
db.COLLECTION_NAME.getIndexes()
مثال
در پایین ما دو تا ایندکس در کالکشن mycol به شرح ذیل ایجاد می کنیم :
db.mycol.createIndex({"title":1,"description":-1})
از طریق دستور زیر می توانیم همه ایندکس موجود در کالکشن mycol را نمایش داد:
> 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" } ] >
عملگرهای جمعی، رکوردهای اطلاعات را پردازش میکنند و نتیجههای محاسبه شده را برمیگردانند.
در sql، دستور (*)count همراه Group by معادل یک تابع جمعی در MongoDB است.
سینتکس پایه برای این متد به شکل زیر است :
>db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)
مثال در این مجموعه شما داده های زیر را دارید.
{ _id: ObjectId(7df78ad8902c) title: 'MongoDB Overview', description: 'MongoDB is no sql database', by_user: 'tutorials point', url: 'http://www.tutorialspoint.com', tags: ['mongodb', 'database', 'NoSQL'], likes: 100 }, { _id: ObjectId(7df78ad8902d) title: 'NoSQL Overview', description: 'No sql database is very fast', by_user: 'tutorials point', url: 'http://www.tutorialspoint.com', tags: ['mongodb', 'database', 'NoSQL'], likes: 10 }, { _id: ObjectId(7df78ad8902e) title: 'Neo4j Overview', description: 'Neo4j is no sql database', by_user: 'Neo4j', url: 'http://www.neo4j.com', tags: ['neo4j', 'database', 'NoSQL'], likes: 750 },
اکنون اگر بخواهید از مجموعهی بالا لیستی از تعداد دورههای نوشته شده توسط هر کاربر را نمایش دهید و استخراج کنید، باید ار متد ()aggregate به صورت زیر استفاده کنید :
> db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}]) { "result" : [ { "_id" : "tutorials point", "num_tutorial" : 2 }, { "_id" : "Neo4j", "num_tutorial" : 1 } ], "ok" : 1 } >
معادل کوئری بالا در sql به این شکل خواهد بود: (*)select by_user, count
در مثال بالا، سندهای گروه بندی شده توسط فیلد by_user را داریم و در هر اجرای by_user مقدار قبلی جمع کلی افزایش مییابد.
در اینجا لیست عبارتهای جمعی موجود، آمده است.
در Command shell یونیکس، خط لوله (Pipeline) به معنی امکان اجرای یک عملیات روی چندین ورودی و استفاده از خروجی بعنوان ورودی برای دستور بعدی و ادامهی آن است. MongoDB نیز pipeline در MongoDB را در چارچوب توابع جمعی پشتیبانی میکند.
یک مجموعه از مراحل وجود دارند که هرکدام از آنها یک مجموعه از اسناد را بعنوان ورودی میگیرند و یک مجموعه از سند را بعنوان نتیجه (یا نتیجه را بعنوان سند JSON در پایان خط لوله) ارائه میدهند. این عمل به نوبه خود میتواند برای مرحله بعد و یا مراحل بعدی، استفاده شود.
مراحل ممکن در چارچوب توابع جمعی در زیر آمده اند:
به طور کلی عملیات جمعی مقادیر چندین سند را باهم گروه بندی میکند و میتواند یک نوع از عملگرها را روی اطلاعات دسته بندی شده انجام دهد تا یک نتیجهی واحد را برگرداند.
تکثیر، افزونگی را فراهم میآورد و دسترسی پذیری دادهها را توسط کپی داده در چندین سرور مختلف افزایش میدهد.
این کار، یک پایگاه داده را در مقابل از دسترس خارج شدن یک سرور مفرد، محافظت میکند.
همچنین امکان بازیابی از خرابی سخت افزار و وقفههای سرویس را به کاربر میدهد.
توسط کپی برداری از اطلاعات، میتوانید یکی از آنها را برای بازیابی، گزارشگیری و پشتیبان گیری اختصاص دهید.
MongoDB عمل تکثیر را با استفاده از مجموعه کپی (Replica set) انجام میدهد. مجموعه کپی یک گروه از نمونههای mongodb هستند که مجموعه داده یا dataset مشابهی را میزبانی (Host) میکنند.
در کپی داده، یک گره، گره اصلی است و تمام عملیات نوشتن را دریافت میکند. بقیهی نمونهها، عملیات را از گره اصلی، دریافت و اعمال میکنند.
بنابراین آنها هم dataset مشابهی دارند. مجموعهی کپی تنها میتواند یک گره اصلی داشته باشد.
در زیر یک نوع دیاگرام از تکثیر در MongoDB نشان داده شده است که در آن برنامهی سمت کلاینت همیشه با گرهی اصلی در ارتباط است و گرهی اصلی، دادهها را گرههای ثانویه تکثیر میکند.
ویژگیهای مجموعهی کپی
در اینجا میخواهیم یک نمونه از mongodb را به یک مجموعهی کپی تبدیل کنیم. برای این کار مراحل زیر را انجام دهید:
سینتکس پایه –replSet به شکل زیر است:
mongod --port "PORT" --dbpath "YOUR_DB_DATA_PATH" --replSet "REPLICA_SET_INSTANCE_NAME"
mongod --port 27017 --dbpath "D:\set up\mongodb\data" --replSet rs0
دستور فوق یک نمونه از mongod را با نام rs0، روی پورت ۲۷۰۱۷ راه اندازی میکند. اکنون command prompt را باز کنید و به این نمونه mongod متصل شوید.
در سمت کلاینت، دستور ()rs.initiate را برای شروع کردن یک مجموعهی کپی جدید صادر کنید.
برای چک کردن تنظیمات مجموعهی کپی، دستور ()rs.conf را صادر کنید. برای چک کردن وضعیت مجموعه کپی نیز دستور ()rs.status را صادر کنید.
برای افرودن اعضا به مجموعهی کپی، چند نمونه mongodb را در چندین کامپیوتر راه اندازی کنید.
اکنون برنامهی سمت کلاینت را اجرا و دستور ()rs.add را اجرا کنید.
سینتکس پایه دستور ()rs.add به شکل زیر است:
>rs.add(HOST_NAME:PORT)
مثال
فرض کنید نام نمونهی mongodb شما mongod1.net و بر روی پورت ۲۷۰۱۷ در حال اجراست. برای افزودن این نمونه به مجموعه کپی، دستور () rs.add را در سمت کلاینت اجرا کنید.
>rs.add("mongod1.net:27017") >
وجه کنید که فقط وقتی میتوانید یک نمونه mongodb را برای مجموعه کپی اضافه کنید که به گره اصلی متصل باشید. برای چک کردن اینکه به گره اصلی متصل هستید، دستور ()db.isMaster را در سمت کلاینت صادر کنید.
چرا Sharding؟
دیاگرام زیر نحوه Sharding در MongoDB را نشان میدهد:
Shards: Shard برای ذخیره داده استفاده میشود. آنها دسترس پذیری بالا و پایداری داده را فراهم میکنند.
در محیط تولید هر Shard یک مجموعه کپی جداست.
Config Servers: Config Server متا دیتای کلاستر را نگهداری میکند.
این دادهها شامل اطلاعات نگاشت دیتاست کلاستر برای Shardهاست. مسیریاب کوئری (query router) از این متا دیتا برای نشان گذاری عملیات برای Shardهای تعیین شده استفاده میکند. در محیط تولید Shard شده، کلاسترها دقیقا ۳ سرور تنظیمات دارند.
Query Routers: مسیریاب کوئریها بطور اساسی نمونههای mongos و واسط بین برنامه کلاینت هستند و عملیات را به Shard مناسب هدایت میکنند. مسیریاب کوئری عملیات را برای Shard، پردازش و نشان گذاری میکنند و نتیجه را برای کاربر برمی گردانند. یک Shard کلاستر شده میتواند شامل چندین مسیریاب کوئری (برای تقسیم بارگیری درخواست کلاینت) باشد. یک کلاینت میتواند درخواست هایش را یه یک مسیریاب کوئری ارسال کند. عموما یک Shard کلاستر شده چندین مسیریاب کوئری دارد.
همانطور که اندازهی داده در افزایش است، شاید تنها یک ماشین برای ذخیره سازی دادهها کافی نباشد و یا نتواند کارآیی قابل قبولی را برای خواندن و نوشتن فراهم کند. Sharding این مشکل را با مقایس پذیری افقی حل نموده است. توسط Sharding، میتوانید دستگاههای دیگری را برای پشتیبانی از دادههای درحال رشد بیافزایید و عملیات خواندن و نوشتن را بیشتر پوشش دهید.
برای پشتیبان گیری از اطلاعات، از فایل جداگانهی دیگری درشاخه Bin استفاده میکنیم که MongoDump نام دارد و یک فایل دامپ را ایجاد میکند.
سینتکس پایه برای دستور mongodump به شرح زیر است :
>mongodump
مثال
سرور Mongod خود را شروع کنید فرض کنید که سرور mongod شما در localhost و در پرت ۲۷۰۱۷ اجرا می شود، دستور prompt را باز کنید و به پوشه bin در نمونه mongodb خود بروید و دستور mongodump را تایپ کنید.
اکنون فرض کنید مجموعه mycol دارای داده های زیر است.
>mongodump
فرمان به سرور در حال اجرا در ۱۲۷٫۰٫۰٫۱ و پورت ۲۷۰۱۷ متصل شده و تمام اطلاعات سرور را به دایرکتوری / bin / dump / متصل می کند.
پس خروجی فرمان به شکل زیر است :
در زیر لیستی از گزینه های موجود که می تواند با دستور mongodump مورد استفاده قرار گیرد آورده شده است
برای بازگرداندن اطلاعات پشتیبان از فرمان mongorestore MongoDB استفاده می شود.
این دستور تمام داده ها را از دایرکتوری پشتیبان بازیابی می کند.
سینتکس پایه برای دستور mongorestore به شکل زیر می باشد :
>mongorestore
نتیجه پشتیبان گیری از همه دیتابیسها و همه قسمتها به انضمام فایلها در شاخهای به اسم dump در پوشه Bin صورت میگیرد.آموزش پشتیبان گیری در MongoDB به اتمام رسید. در جلسه بعد توسعه در MongoDB را آموزش خواهیم داد.با ما همراه باشید.
بهترین روش شامل نمونه سازی از راه اندازی شما، انجام آزمایش بار، نظارت بر شاخص های کلیدی، و استفاده از آن اطلاعات برای تنظیمات بخش اصلی این رویکرد است که به طور کامل سیستم شما را نظارت می کند.
این به شما کمک خواهد کرد که قبل از توسعه سیستم تولید خود را حفظ کنید و تعیین کنید که آیا باید ظرفیت را اضافه کنید. برای مثال، داشتن بینش در مورد استفاده از حافظه های احتمالی، می تواند باعث جلوگیری از ضربه زدن به قفل کردن نوشتن شود.
برای نظارت بر محیط توسعه در مونگو ، MongoDB برخی از دستورات زیر را فراهم می کند.
این فرمان وضعیت تمام موارد مونگو را اجرا می کند و شمارنده ها را از عملیات پایگاه داده باز می کند.
این شمارنده ها شامل درج ها، نمایش ها، به روز رسانی ها، حذف، و مکان نما هستند.
همچنین این فرمان هنگام برخورد با صفحهhitting، درصد قفل خود را نشان می دهد.
این به این معنی است که حافظه شما هنگام اجرا کم شده،یا مشکل ظرفیت نوشتن و برخی از مشکلات عملکرد بوجود آمده است.
برای اجرای دستور،روی نمونه ای از mongod خود شروع کنید.
در خط فرمان دیگر، روی مسیر bin در نصب mongodb بروید و mongostat را تایپ کنید.
D:\set up\mongodb\bin>mongostat
خروجی فرمان به شکل زیر می باشد :
این فرمان فعالیت های خواندن و نوشتن نمونه MongoDB را بر اساس مجموعه جمع آوری و گزارش می کند.
به طور پیش فرض، mongotop اطلاعات را در هر ثانیه باز می گرداند، و شما می توانید آن را تغییر دهید.
شما باید بررسی کنید که این فعالیت خواندن و نوشتن با هدف برنامه شما منطبق است یا خیر.
برای اجرای دستور، نمونه ای از mongod خود را شروع کنید.
سپس در خط فرمانی دیگری، به مسیر bin روی نصب mongodb بروید و mongotop را وارد کنید.
D:\set up\mongodb\bin>mongotop
خروجی فرمان به شکل زیر می باشد :
برای تغییر دستور mongotop برای به حداقل رساندن اطلاعات، یک شماره خاص بعد از دستور mongotop مشخص کنید.
D:\set up\mongodb\bin>mongotop 30
مثال بالا مقدار را هر ۳۰ ثانیه یکبار برمی گرداند.
به غیر از ابزار MongoDB، ابزار ۱۰gen یک سرویس مانیتورینگ میزبانی رایگان، سرویس مدیریت (MongoDB MMS) را فراهم می کند، که یک داشبورد را ایجاد می کند و به شما یک معیار از کل خوشه شما را می دهد
در دوره های آموزش تضمینی مجتمع فنی ارومیه که به صورت خصوصی و عمومی در دو شیوه حضوری و آنلاین برگزار می شود سرفصل های بسیار متنوع و کاربردی را بصورت پروژه محور آموزش داده می شود تا شخص کارآموز بتواند بلافاصله پس از اتمام این دوره در کمترین زمان ممکن وارد بازار کار شود.
آموزش تخصص ماست با ما حرفه ای شوید
جهت مشاوره با شماره 09149431772 در ارتباط باشید ...