در این قسمت از سری آموزش MongoDB که به صورت رایگان از وبسایت پرووید به شما تقدیم می گردد، در رابطه با ماهیت document صحبت خواهیم کرد.
در یک دیتابیس رابطه ای و یا اصطلاحاً RDBMS یک جدول و یا table می تواند چندین سطر و یا row وچندین ستون و یا column را در خود جای بدهد. به طور مشابه در MongoDB یک کالکشن می تواند چندین سند و یا document که هرکدام معادل با سطح های بانک های اطلاعاتی رابطه ای هستند را در خود جای دهد. هر document می تواند چندین field را که نمایانگر column و یا همان ستون های بانک های اطلاعاتی رابطه ای هستند را در خود داشته باشند. بنابراین به بیان ساده هر document در MongoDB شبیه به یک record است و یک کالکشن نقش یک جدول را ایفا می کند که می توانند document مختلف را در خود نگهداری کند.
آنچه که در قسمت زیر مشاهده می کنید مثالی از یک document مبتنی بر JSON را نشان می دهد.

در مثال بالا یک document را در curly braces و یا همان علامت {} قرار گرفته است. در این قسمت field مختلفی نیز با ساختار “field”:”value” تعریف گردیده اند. در قسمت بالا id_ و firstName و lastName نام فیلد ها هستند که با مقادیر متناظر با خودشان مقداردهی شده اند. از علامت دو نقطه و یا “:” به منظور مقدار دهی به فیلد ها استفاده می گردد. ضمناً فیلد های مختلف با استفاده از کاما از هم جدا می شوند. یک کالکشن می تواند document متعددی را با کاما در کنار یکدیگر قرار می دهد.
آنچه که در قسمت زیر مشاهده می کنید، رابطه بین دیتابیس و کالکشن ها و document را نشان می دهد.

آنچه که در قسمت زیر مشخص شده است؛ مثالی از یک document است که شامل یک آرایه و یک document تو در تو و یا اصطلاحاً embedded document می باشد.
{
"_id": ObjectId("32521df3f4948bd2f54218"),
"firstName": "John",
"lastName": "King",
"email": "john.king@abc.com",
"salary": "33000",
"DoB": new Date('Mar 24, 2011'),
"skills": [ "Angular", "React", "MongoDB" ],
"address": {
"street":"Upper Street",
"house":"No 1",
"city":"New York",
"country":"USA"
}
}
داکیومنت ها در MongoDB داده ها را با فرمت JSON ذخیره می کنند. در مثالی که در قسمت بالا دیدید فیلد هایی از قبیل firstName و lastName و email و salary شبیه به ستون های بانک های اطلاعاتی رابطه ای عمل می کنند. مقادیر متناظر با آن ها نیز شبیه مقادیر مربوط به هر کدام از سلول ها که نقطه برخورد سطر ها و ستون ها می باشند، عمل می کنند. می توان به فیلد id_ به عنوان کلید اصلی و یا primary key فکر کرد که در آن ObjectId و یا شناسه آبجکت به صورت منحصر به فرد ذخیره سازی می شود. فیلد skills یک آرایه و فیلد address نیز یک document مبتنی بر JSON دیگر را در خود جای داده است.
نام فیلد ها می توانند بدون استفاده کردن از علامت ” ” تعریف بگردند. این موضوع در مثال زیر نشان داده شده است.
{
_id: ObjectId("32521df3f4948bd2f54218"),
firstName: "John",
lastName: "King",
email: "john.king@abc.com",
salary: "33000",
DoB: new Date('Mar 24, 2011'),
skills: [ "Angular", "React", "MongoDB" ],
address: {
street:"Upper Street",
house:"No 1",
city:"New York",
country:"USA"
}
}
در MongoDB داده ها در قالب جفت کلید مقادیر و یا اصطلاحاً key-value pair و در قالب داکیومنت های BSON ذخیره سازی می گردند. BSON یک نمایش باینری از داکیومنت های مبتنی JSON می باشند که می توانند data type بیشتری را نسبت به JSON پشتیبانی کنند. MongoDB دارای درایور های مختلفی است که میتوانند داکیومنت های JSON را به دادههای BSON تبدیل نمایند. این موضوع در تصویر زیر نیز نشان داده شده است.

در این قسمت در رابطه با نکات بسیار مهم در رابطه با کار کردن با داکیومنت ها صحبت خواهیم کرد.
در سیستم MongoDB می توان یک داکیومنت را طوری تعریف کرد که فیلد هایی داشته باشد، که هر کدام از آنها به یک داکیومنت دیگر اشاره کنند. این داکیومنت های تودرتو را اصطلاحاً nested document و یا embedded document می نامیم.
آنچه که در قسمت زیر مشاهده می کنید یک embedded document نشان می دهد که در آن فیلد های department و address شامل داکیومنت های دیگر هستند.
{
_id: ObjectId("32521df3f4948bd2f54218"),
firstName: "John",
lastName: "King",
department: {
_id: ObjectId("55214df3f4948bd2f8753"),
name:"Finance"
},
address: {
phone: { type: "Home", number: "111-000-000" }
}
}
در قسمت بالا دقت کنید فیلد address حاوی فیلد دیگری با نام phone است که داکیومنت دیگری را در سطح دوم در خود جای داده است.
ضمناً یک embedded document می تواند تا 100 سطح تودرتویی را پشتیبانی کند. نهایت حجم قایل استفاده در embedded document ها نیز 16 مگابایت می باشد. برای دسترسی به embedded document ها می توانیم با استفاده از نقطه گذاری و یا dot notation استفاده کنیم. برای مثال embedded-document.fieldname می تواند برای دسترسی پیدا کردن به phone number مربوط به یک address شبیه به address.phone.number مورد استفاده قرار بگیرید.
یک فیلد در یک داکیومنت می تواند حاوی آرایه ها نیز باشد. آرایه ها می توانند انواع مختلفی از داده ها و embedded document ها را در خود جای بدهند. عناصر درون آرایه در یک داکیومنت، می توانند با استفاده از نقطه گذاری و یا dot notation مورد دسترسی قرار بگیرند. دقت کنید که آرایه ها از اندیس صفر شروع می شوند. ضمناً برای استفاده از آرایه ها باید از علامت ” ” استفاده کنیم. این موضوع در کد زیر نمایش داده شده است.
{
_id: ObjectId("32521df3f4948bd2f54218"),
firstName: "John",
lastName: "King",
email: "john.king@abc.com",
skills: [ "Angular", "React", "MongoDB" ],
}
هماهنطور در قسمت بالا نیز مشاهده می کنید، یک داکیومنت شامل یک فیلد، با نام skills است که در آن یک آرایه از string ها قرار گرفته است. برای دسترسی پیدا کردن به عنصر دوم در این آرایه که نام ان skills است می توانید از skills.1 استفاده کنید. همانطور که گفتیم اندیس ها در آرایه ها از مقدار صفر آغاز می شوند.
در درس بعدی درمورد درج کردن یک داکیومنت در یک کالکشن صحبت خواهیم کرد.
برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید. صفحه ورود و ثبت نام