آشنایی با Mongodb Shell

آشنایی با Mongodb Shell

دراین آموزش مانگو دی بی که بخشی از آشنایی با مبانی مونگو دی بی می باشد،پس از این که با اصول و مبانی اولیه مانگو دی بی آشنا شدیم می خواهیم با سرویسی به نام Mongodb Shell آشنا بشیم.

بعد از این که مانگو دی بی را نصب کردید سپس می توانید نحوه استفاده از سرویس Mongodb Shell به جهت ارتباط و تعامل با سرور پایگاه ­داده مانگو دی ­بی بیشتر شناخت داشته باشیم.

Mongodb Shell چیست؟

Mongodb Shell به شما این امکان را می­ دهد که داده ­ها و اطلاعات را در پایگاه داده مانگو دی­ بی دسترسی و مدیریت داشته باشید.

معرفی Mongodb Shell

Mongodb Shell در واقع یک Interface و رابط تعاملی براساس زبان جاوا اسکریپت هستش که برای مانگو دی­ بی ایجاد شده است.

Mongodb Shell به شما این امکان را می­ دهد که داده ­ها و اطلاعات را در پایگاه داده مانگو دی­ بی دسترسی و مدیریت داشته باشید.

همچنین تمام قابلیت­ ها و وظایف مدیریتی دیتابیس مانگو دی بی را ازطریق همین رابط گاربری جذاب Mongodb Shell انجام دهید و با پایگاه ­داده ارتباط بگیرد و کار کنید.

ابزار Mongodb Shell در مانگو دی بی همان ابزار mysql در پایگاه داده MySQL، یا ابزار psql در پایگاه داده PostgreSQL و ابزار SQL*Plus در دیتابیس و پایگاه ­داده اوراکل می باشد.

توجه داشته باشید که زمانی پایگاه­ داده مانگو دی­ بی را نصب می کنید ابزار Mongodb Shell به­ طور پیش­فرض نصب می شود در سیستم عامل شما وجود دارد و دسترسی ­به Mongodb Shell دارید اما این ابزار در نسخه5 (MongoDB V5.0) مانگو دی­ بی وجود ندارد (منسوخ­ شده) و رابط کاربری دیگری را جایگزین آن کرده است.

قبل از اینکه بخواهیم با Mongodb Shell کار کنیم و طرز استفاده از آن را یاد بگیریم، بهتر است ابتدا آن را دانلود و نصب کنید. (دانلود و نصب Mongodb Shell به صورت جداگانه)

برای شروع و کار با ابزار Mongodb Shell ابتدا بایستی با توجه به سیستم­ عامل ­های مک macOS و لینوکس Linux و یا ویندوز ترمینال را باز کنید و در سیستم ­عامل ویندوز بایستی Command Prompt را بازکنید و دستور زیر را وارد کنید:

mongosh

Mongodb Shell به ­طور خودکار زمانی که مانگو دی­ بی در سیستم لوکال شخصی خودتان (localhost) روی پورت پیش­ فرض 27017 اجرا شده و به دیتابیس متصل می­ شود.

بنابراین پس باید مطمئن شوید که سرور مانگو دی­ بی بالا و فعال باشد و قبل­ از اینکه مانگو دی بی را اجرا کنید که مطمئن شوید که این پورت باز باشد و بتوانید به این پورت متصل شوید.

توجه داشته باشید که می­ توانید از Mongodb Shell به ­عنوان مفسر جاوا اسکریپت (full-featured JavaScript interpreter) یا همان اجراکننده تمام کدهای جاوا اسکریپت است با امکانات کامل و به ­عنوان یک MongoDB client استفاده کنید.

تفسیر کننده کدهای جاوا اسکریپت (JavaScript interpreter)

Mongodb Shell یک مفسر جاوا اسکریپت (JavaScript interpreter) با امکانات کامل است که می ­توانید دراین محیط هرکد جاوا اسکریپت زیر را براحتی اجرا کنید. مانند این:

> Math.max(10,20,30);
30

درواقع Mongodb Shell به­ شما این اجازه را می ­دهد که همچنین دستورات جاوا اسکریپتی را به ­صورت چندخطی اجرا کنید و  زمانی­که اینتر Enter را بزنید خود Mongodb Shell به خوبی این را تشخیص می­ دهد که آیا کد جاوا اسکریپت کامل است یا نه.

اگر دستور اسکریپت کامل نباشد، Mongodb Shell به ­شما اجازه می­ دهد تا برای این که به شما نمایش دهد که دستور شما ادامه دارد و تمام نشده است از علامت (...) در پایان خط دستور نشان می دهد در خط بعدی بروید و ادامه دستور را تایپ کنید.

> function add(a, b) {
... return a + b;
... }
> add(10,20);
30

برای پاک­ کردن دستورات اجرا و تایپ شده در محیط از دستور ()console.clear مانند تصویر استفاده کنید:

console.clear()

آشنایی با MongoDB client

ابزار Mongodb Shell درواقع یک MongoDB client است.

به­ طور پیش ­فرض در سرور مانگو دی بی یک پایگاه ­داده آزمایشی و تستی به نام test است که می توانید از طریق Mongodb Shell به آن متصل شوید.

سرور مانگو دی بی از طریق اتصال و ارتباط پایگاه داده database connection را از طریق یک متغیر عمومی global variable از قبل تعریف شده ای که با سطح دسترسی عمومی می باشد می توانید به پایگاه داده test متصل شوید که نام این متغیر db نامیده می شود.

متغیر db به شما این امکان را می­ دهد به شکل دستور زیر به پایگاه داده اتصال برقرار کنید:

> db
test

نکته اینجاست زمانی در Mongodb Shell نام متغیر db را تایپ می ­کنید در واقع قصد دارید نتیجه ای را در mongo shell برگردانید و نمایش دهید.

پوسته Mongodb Shell درکنار داشتن امکانات علی و پشتیبانی کامل از دستورات جاوا اسکریپت، یک­سری دستورات کامل و مفیدی را دراختیار کاربران قرار می­ دهد که بتوانید به ­راحتی با سرور پایگاه داده مانگودی­ بی در ارتباط باشید و با آن کار کنید.

(در واقع در این محیط می توانید تمامی دستورات مانگو دی بی را کامل اجرا کنید)

به­ عنوان­ مثال شما با واردکردن یکی از دستورات مانگو دی بی مانند shows dbs که خروجی این دستور برای نمایش دادن و فهرست ­کردن نام تمام پایگاه ­داده ­های روی سرور مونگو دی بی شما می ­باشد.

test> show dbs
admin        41 kB
config     73.7 kB
local      81.9 kB

با اجرای دستور بالا در خروجی نمایش می دهد که این سرور مانگو دی بی سه پایگاه ­داده دارد.

برای اینکه بخواهید از روی دیتابیس جاری که در حال روی آن کار می کنید به پایگاه دیگری وصل شوید و اصطلاحا بین پایگاه داده ها switch کنید می­ توانید از دستور <use <database که این هم یکی از دستورات مانگو دی بی است استفاده کنید.

(در این جا <database> می تواند نام هر پایگاه داده که در سرور مانگو دی بی باشد قرار دهید)

که به ­جای علامت <database> می­ توان نام پایگاه داده مقصد و مورداستفاده را قرار داد.

به ­عنوان مثال با استفاده در دستور زیر شما قصد دارید از دیتابیس جاری (مهم نیست چی باشد) به پایگاه داده bookdb متصل شوید و اصطلاحا به پایگاه داده جدید switch ­کنید:

test> use bookdb
switched to db bookdb

توجه داشته باشید که شما می ­توانید از طریق دستور بالا به پایگاه داده ای که اصلا تعریف­ نشده و وجود ندارد متصل شوید و switch کنید که دراین ­حالت مانگو دی­ بی زمانی ­که به پایگاه داده که اصلا وجود ندارد switch کنید به­ طور خودکار پایگاه داده جدیدی ایجاد می شود همزمان به همان پایگاه داده ارتباط برقرار می کنید.

دستور زیر در محیط نشان می دهد که درحال­ حاضر با واردکردن متغیر db اشاره به پایگاه داده bookdb جاری (که به آن متصل هستید) را نمایش می دهد.

> db
bookdb

مانند دستور زیر شما می ­توانید به collection به نام books در پایگاه داده bookstore ازطریق متغیر db دسترسی داشته باشید و به آن متصل شوید:

> db.books
bookstore.books

آشنایی با عملیات CRUD در مانگو دی بی

در ادامه یاد می­ گیرید که به ­چه صورتی یک سند جدیدی را ایجاد create (C)، سندی را مشاهده کنید read (R)، سندی را حذف delete (D) و یا بروزرسانی update (U) کنید.

این 4 عملیات اغلب به ­عنوان عملیات CRUD نامیده می ­شود.

ایجاد سند جدید create (C)

برای افزودن یک سند document جدید به یک collection از متد ()insertOne استفاده کنید.

دستور زیر یک سند document جدیدی را به collection به­ نام books اضافه می­ کند:

db.books.insertOne({
   title: "MongoDB Tutorial",
   published_year: 2020
})

خروجی دستور بالا به ­شکل زیر نمایش داده می­ شود:

{
        "acknowledged" : true,
        "insertedId" : ObjectId("5f2f39fb82f5c7bd6c9375a8")
}

زمانی­ که دستور بالا را اجرا می­ کنید Mongodb Shell دستور به سرور مانگو دی­ بی ارسال می­ کند.

که اگر دستور وارد شده درست باشد. مانگو دی­ بی سند جدیدی را Insert می کند و خروجی اطلاعات سند جدید وارد شده را نمایش می­ دهد.

که مثال بالا، خروجی به سند اضافه جدید به­ شکل دو پارامتر acknowledged و insertedId نمایش داده می ­شود.

در خروجی دستور ایجاد سند، فقط پارامتر acknowledged همان­ مقدار پارامتر _id در سند ایجاد شده می باشد.

زمانی­ که در مانگو دی­ بی بخواهید یک سند جدیدی بدون مشخص­ کردن مقدار پارامتر فیلد _id در collection ایجاد کنید، خود مانگو دی­ب ی یک مقدار کاملا جدید و منحصر به­ فردی تولید کرده و به پارامتر فیلد _id در سند اضافه می­ کند.

مانگو دی­ بی از مقدار پارامتر _id به­ دلیل این که مقدار منحصر به فرد و unique دارد، برای شناسایی و جست­جو اسناد در collection استفاده می کند.

نمایش سند read (R)

برای انتخاب و نمایش اطلاعات یک سند در یک collection از متد findOne استفاده می کنیم:

db.books.findOne()

خروجی دستور بالا به­ شکل زیر نمایش داده می­ شود.

{
  _id: ObjectId("62143f34cca1c7af0ad1d126"),
  title: 'MongoDB Tutorial',
  published_year: 2020
}

اگر بخواهید خروجی دستور بالا و سند را به ­شکل بهتری نمایش دهید می توانید از دستور متد pretty زیر به ­شکل زیر استفاده کنید:

db.books.find().pretty()

خروجی دستور بالا به­ شکل زیر نمایش داده می­ شود:

{
        "_id" : ObjectId("5f2f3d8882f5c7bd6c9375ab"),
        "title" : "MongoDB Tutorial",
        "published_year" : 2020
}

همان­طور که در خروجی دستور نمایش سند کاملا مشخص است این است که مانگو دی­ بی فیلد _id را به­ همراه مقادیرش برای تمامی اسناد ثبت می کند و کلا مقادیر اسناد به­ شکل جفت داده (field-and-value) مقدار و پارامتر نمایش می­ دهد.

به ­روزرسانی سند update (U)

در مانگو دی­ بی می توانید هر یک از مقادیر پارامترهای یک سند document را به روزرسانی کنید با استفاده از متد updateOne می­ توانید استفاده این کار را انجام دهید:

متد updateOne حداقل دو پارامتر ورودی می گیرد که حتما بایستی مقداردهی شود.

  • آرگومان ورودی اول این متد، بایستی سندی که می­ خواهید اطلاعاتش به ­روز شود را مشخص کنید.
  • پارامتر ورودی دوم متد ، نشان­ دهنده مقادیری جدیدی که می­ خواهید در سند با پارامتر مربوطه به ­روز شود را مشخص کنید.

دستور زیر نشان می ­دهد که چطور در سند مشخص شده می خواهید مقدار پارامتر published_year به مقدار جدید "MongoDB Tutorial" بروز رسانی شود:

db.books.updateOne(
	{ title: "MongoDB Tutorial"}, 
	{ $set: { published_year: 2019 }}
)

خروجی به ­روزرسانی سند به شکل زیر نمایش داده می­ شود:

{
  acknowledged: true,
  insertedId: null,
  matchedCount: 1,
  modifiedCount: 1,
  upsertedCount: 0
}

حالا باید بفهمیم در خروجی پارامترها چطور کار می ­کند:

اولین آرگومان و پارامتر identifies است که سند را شناسایی و مشخص می کند و ازطریق پارامتر _id شناسایی می­ شود.

دراین collection تنها یک سند با مقدار "MongoDB tutorial" با پارامتر title وجود دارد.

{title: "MongoDB Tutorial"}

دومین پارامتر مقدار جدیدی است که در سند به ­روز خواهد شد.

{
    $set: {
        published_year: 2019
    }
}

عبارت کلیدی SET$ یک دستور کلیدی برای به ­روزرسانی سند می باشد که مشخص می­ کند در این مثال سند انتخاب شده پارامتر published_year به­ مقدار جدید 2019 به ­روز خواهد شد.

دستور SET$ در واقع یک عملگر بروز رسانی است که مقدار فیلد را با مقدار مشخصی جایگزین می­ کند.

حذف سند delete (D)

برای حذف یک سند از collection می­ توانید از دستور متد deleteOne استفاده کنید. متد deleteOne تنها یک آرگومان یا پارامتر ورودی می­ پذیرد و آن هم ­مقدار پارامتری که مشخص­ کننده سند موردنظر باشد که می­ خواهید آن را حذف کنید.

درمثال زیر شما با استفاده از دستور deleteOne یک سند را از collection به نام books را حذف می کند.

db.books.deleteOne({title: "MongoDB Tutorial"});

خروجی دستور حذف سند به ­شکل زیر می­ باشد:

{
    "acknowledged": true,
    "deletedCount": 1
}

دستور خروجی بالا نشان می ­دهد که ازطریق پارامتر deletedCount که برابر 1 است نشان می دهد که سند یک سند با موفقیت حذف شده است.

در مانگو دی بی برای نمایش تمام Collection ها که پایکاه داده جاری قرار دارید از دستور زیر استفاده کنید :

show collections

خروجی دستور بالا به­ شکل زیر می ­باشد:

books

که نشان می دهد که درحال­ حاضر در پایگاه داده جاری تنها یک collection به نام books دارد.

خلاصه

  • پوسته Mongodb Shell یک رابط جذاب تعاملی برپایه جاوا اسکریپت است که برای مانگو دی­ بی طراحی شده است.
  • Mongodb Shell به شما این امکان را می­ دهد که داده ­ها در مانگو دی­ بی مدیریت کنید و تمام اطلاعات را واکشی و نمایش دهید.
  • از طریق دستور show dbs می توانید لیست تمام پایگاه ­داده ­هایی روی سرور مانگو دی بی وجود دارد را نمایش می­ دهد.
  • از طریق دستور show collections می توانید لیست تمام collection هایی که در پایگاه داده جاری قرار گرفته ­اید نمایش می­ دهد.
  • عملیات CRUD به چهار عملیات اساسی ایجاد create (C) ، read (R) خواندن ، حذف delete (D) و یا بروزرسانی update (U) در اسناد اشاره دارد.
  • برای ادامه آموزش مانگو دی‌ بی MongoDB می توانید مقاله آشنایی با مبانی مونگو دی بی را مطالعه کنید.

برای ادامه آموزش مانگو دی‌ بی MongoDB می توانید مقاله آشنایی با انواع Data Type در مانگو دی‌ بی را مطالعه کنید.

محسن زمانی هستم، برنامه نویس و طراح وب ، سئو هم بلدم . به هدف تفریح و سرگرمی این وب سایت رو طراحی کردم تا مطالبی که دوست دارم رو اینجا به اشتراک بزارم.

دیدگاه خود را بنویسید:

آدرس ایمیل شما نمایش داده نخواهد شد.