آشنایی با مبانی مونگو دی­ بی

مبانی مونگو دی­ بی

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

منظور از مفاهیم مبانی مونگو دی بی، آشنایی با مواردی مانند اسناد documents، مجموعه­ ها collections و پایگاه داده ها databases و فضاهای نام namespaces صحبت کنیم.

ساختارهای داده (Data formats)

در مونگودی­ بی mongodb، اغلب با فرمت ­های JSON و BSON سرکار دارید. بنابراین آشنایی، درک و شناسایی این ساختار این فرمت­ ها مهم و ضروری است.

JSON

JSON مخفف JavaScript Object Notation است. syntax یا ساختار دستوری Json براساس نسخه JavaScript ECMA-262 3rd ویرایش سوم است.

یک سند JSON مجموعه ­ای از فیلدها fields و مقادیر values در یک ساختار سازماندهی­ شده تشکیل یک سند JSON را می دهد.

مثلا:

{
   "first_name": "John",
   "last_name": "Doe",
   "age": 22,
   "skills": ["Programming","Databases", "API"]
}

BSON

BSON مخفف Binary JSON است که یک کد باینری serialize شده شبیه اسناد JSON است.

دلیل استفاده از BSON به جای JSON چیست؟

دلیل استفاده از BSON به جای JSON این هستش که ساختار JSON در یک سری data type ها محدودیت هایی وجود دارد که مونگو. دی بی بایستی از ساختار BSON استفاده کند.

اسناد (Documents)

در مونگو دی­ بی داده­ ها و اطلاعات به ­عنوان اسناد ذخیره می شوند که خیلی ساده به آن­ها BSON documents گفته می شود.

مبانی مونگو دی­ بی -ساختا سند
ساختار سند

یک سند document شامل مجموعه ­ای است که به صورت جفت پارامتر (فیلد و مقدار) می باشد:

{
   field_name1: value1,
   field_name2: value2,
   field_name3: value3,
   ...
}

دراین syntax نام فیلد نام در داخل رشته متنی strings قرار می­ گیرد و مقادیر می­ تواند شامل اعداد numbers، رشته ­های متنی strings، اشیا objects ، آرایه ­ها arrays و…. باشند.

{
    _id: ObjectId("5f339953491024badf1138ec"),
    title: "MongoDB Tutorial",
    isbn: "978-4-7766-7944-8",
    published_date: new Date('June 01, 2020'),
    author: { first_name: "John"
, last_name: "Doe"}
}

هر اسناد دارای مقادیر به صورت زوج جفت­ (فیلد و مقدار) به ­شکل زیر است:

  • فیلد _id یک مقدار ObjectId را نگه می دارد.
  •  فیلد title یک مقدار از نوع رشته متنی string را نگه می دارد.
  • فیلد isbn هم یک مقدار از نوع رشته متنی string را نگه می دارد.
  • فیلد published_date هم یک مقداری از نوع تاریخ date را نگه می دارد.
  • فیلد author به صورت یک embedded document است که این پارامتر شامل دو فیلد first_name و last_name است.

اگر با پایگاه داده از نوع سیستم مدیریت پایگاه داده رابطه ­ای relational database management system (RDBMS) آشنایی داشته باشید متوجه خواهید شد که در مونگو دی ­بی یک سند document شبیه به یک رکورد Record در جدول است، اما سند با اطلاعاتی بسیار واضح­تر و گویاتر.

در مونگو دی­ بی هر سند document نام فیلدها دارای یک سری محدودیت هایی می باشد:

  • در مونگو دی بی فیلد _id یک فیلد ثابت در هر سند و نام آن رزرو شده است که مقدار آن در هر سند، کلید شناسایی برای هر سند و دارای مقدار منحصر به­ فرد هر سند است.
  • نام فیلد در سند نمی ­تواند شامل کاراکتر null باشد.
  • نام فیلدها در سطح بالا Top-level نمی­ تواند با کاراکتر ($) شروع شود و تعریف شود.

مجموعه­ ها (Collections)

در مونگو دی­ بی، اسناد Documents را در یک مفهومی به نام مجموعه­ (Collection) ذخیره می شود.

مبانی مونگو دی­ بی - collection
ساختار اسناد در collection

در مونگو دی بی یک Collection مجموعه ای از اسناد document است.

یک Collection شبیه یک جدول در RDBMS است.

RDBMSMongoDB
RowsDocuments
TablesCollections

برخلاف جداول که با یک اسکیما schema ثابت تعریف می­ شود یک collection می تواند دارای اسکیماهای پویا باشد.

این به این معنی است که یک collection ممکن است حاوی اسنادی باشد که دارای تعداد متفاوتی فیلد با نام “shape” در اسناد متفاوت در یک collection.

به­ عنوان­ مثال، می­ توانید اسناد زیر را در یک collection ذخیره کنید:

{
    title: "MongoDB Tutorial",
    published_date: new Date('June 01, 2020')
}

{
    title: "MongoDB Basics",
    published_date: new Date('Jan 01, 2021'),
    isbn": "978-4-7766-7944-8"
}

درمثال بالا اگر توجه کنید متوجه می­ شوید که سند دوم یک فیلد بیشتر از سند اول دارد. شما در مونگو دی­ بی می­ توانید فیلد با دو نام یکسان با مقادیر کاملا متفاوتی برای هرسند داشته باشید.

هر collection یک نام دارد. به ­عنوان­ مثال: collection به نام کتاب.

نام collection نمی­ تواند شامل موارد زیر باشد:

  • نام collection نمی تواند با کاراکتر & تعریف شود.
  • نام collection با نمی تواند کاراکتر null تعریف شود.
  • نام collection به صورت یک رشته متنی خالی تعریف شود.
  • نام collection نمی تواند با نام system تعریف شود به دلیل این که این نام در پایگاه داده مونگو دی بی ررزو شده هستش که در سرور مونکو دی بی به صورت پیش فرض collection به نام system تعریف شده است.

پایگاه داده ها (Databases)

مونگو دی­ بی، مجموعه ­ای از collections را در یک پایگاه­ داده database ذخیره می ­کند. یک single instance از مونگو دی ­بی می­ توانید چندین database پایگاه ­داده را host میزبانی و مدیریت کند.

مبانی مونگو دی­ بی -database
ساختار database

یک پایگاه داده database را در مونگو دی بی می ­توان با هرنامی تعریف کرد مثلا نام badudb اما:

  • اما در تعریف database نمی توان یک رشته خالی ” ” تعریف کرد.
  • در تعربف database می توان از تمام کراکترهای  /\.*<>:|?$ و یا فاصله Space استفاده کرد.
  • حداکثر اندازه نام پایگاه­ داده 64 bytes است.

در مونگو دی­ بی تعریف یک­ سری نام­ ها برای پایگاه ­داده database رزرو شده ا­ست و امکان تعریف نیست و در تعریف پایگاه داده نمی­ توان از این نام­ های adminlocal و config استفاده کرد و باید با یک نام دیگری پایگاه ­داده را تعریف کنید.

فضای نام (Namespace)

فضای نام یا همان Namespace ترکیبی از نام databases به همراه collections در همان database است.

فضای نام Namespace به شما این امکان را می­ دهد که collections را به­ طور کامل بررسی و فراخوانی کنید.

به­ عنوان­ مثال: اگر collection به نام book و database به نام bookdb باشد فضای نام Namespace به صورت زیر می باشد :

bookdb.books

خلاصه

مونگو دی­ بی رکوردهای داده ها را به صورت اسناد BSON documents ذخیره می ­کند. یک document مجموعه ­ای زوج از فیلدها fields و مقادیر values است.

مونگو دی­ بی، documents را دریک collection و collections را در یک database ذخیره می­ کند.

فضای نام یا همان Namespace هم ترکیبی از نام database و نام collection است که هدف استفاده از namespace برای دسترسی راحت­ تر و کار با collection است.

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

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

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

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