آموزش Mongo DB قسمت پنجم
سلام دوستان
امیدوارم تا این لحظه آموزش هایی که خدمتتان ارائه کرده ام، مفید واقع شده باشد.
در این قسمت می خواهم JSON و ثبت سند در بانک اطلاعاتی را خدمتتان ارائه کنم.
خوب آموزش خودم را با این سوال شروع می کنم که JSON چیست؟
JSON مخفف کلمات JavaScript Object Notation است. به این معنی که " نشانه گذاری شی در جاوا اسکریپت " است.
برای ساخت عبارات JSON چند قانون ساده وجود دارد :
عبارت های JSON باید میان آکولاد "{}" قرار بگیرند.
اعضای شی باید با ویرگول "", از هم جدا شوند.
برای تعریف یک عضو در یک شی، ابتدا باید " نام عضو " سپس " دو نقطه "
و در پایان " مقدار " آن نوشته می شود.
مقدار می تواند یکی از انواع (عددی، رشته، بولی، آرایه،
شی و NULL )باشد. سایر مقادیر باید به صورتی دیگر ذخیره شوند.
انواع رشته ها باید داخل دو گیومه (") قرار بگیرند.
JSON یک راه مناسب برای نگهداری اطلاعات است و از لحاظ ساختاری شباهت زیادی به XML رقیب قدیمی خود دارد.
ساختار JSON را مجموعه ای از (مقدار : نام ) تشکیل می دهد. ساختار مشابه آن در زبان سی شارپ KeyValuePair است.
یک مثال خیلی ساده برای درک بهتر موضوع:
یک شی با ساختار زیر در سی شارپ داشته باشیم :
class Customer
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
ساختار JSON متناظر با آن ( در صورتی که مقدار دهی شده باشد) به صورت زیر است:
{
"Id":1,
"FirstName":"John",
"LastName":"Doe"
}
همان طور که در بالا مشاهده می کنید در ساختار JSON تمامی قانون هایی که در بالا ذکر کرده ایم رعایت شده است.
خوب حالا میریم سر اصل مطلب ثبت سند در Mongo DB.
ساختار کلی دستور :
> db.Collection_Name.insert()
خوب یادتون هست در آموزش قبلی که مربوط به Collection ها بود عرض کردم که ما همیشه نیازی به ساخت مجموعه نداریم؟
وارد محیط Mongo DB می شویم :
خوب همین طور که مشاهده می کنید ما یک مجموعه بیشتر نداریم اما سندی که می خواهیم الان ثبت کنیم مربوط به مکاتبات روزانه است و نیاز به مجموعه letter داریم، خوب ما عادت کرده بودیم اول جدول بسازیم بعدا رکورد ثبت کنیم درسته؟اما من در اینجا نمی خوام مجموعه letter رو بسازم! یعنی چی؟ یکم صبر کنید تا با هم یک اتفاق شگفت انگیز رو ببینیم :
در تصویر بالا چند تا نکته وجود دارد.همان طور که مشاهده می کنید ما مجموعه letter نداریم اما می خواهیم یک سند در این مجموعه قرار دهیم و دستور Insert را اجرا کردیم، در اینجا خود Mongo DB چک کرده و متوجه شده که ما همچین مجموعه ای نداریم و اول آن را ساخته سپس آن سند را در مجموعه به ثبت رسانده است. این امکان Mongo DB خیلی معرکه است.شما فکر کنید بدون اینکه جایی را در نظر گرفته باشید می گید من این سند را می خوام در این مجموعه ثبت کنم، اونم می گه باشه
چشم و میره این کار را انجام می ده!!!!
قوانین نام گذاری مجموعه ها:
نام مجموعه نمی تواند خالی یا NULL باشد.
نباید دارای پیشوند system. باشند، زیرا این مجموعه رزرو شده است.
مجموعه هایی که توسط کاربران تعریف می شود نباید شامل کاراکتر $ باشد.
خوب این قسمت آموزش مربوط به قسمت قبلی بود که عرض کردم برای ساخت یک مجموعه 2 را وجود دارد اینم راه دوم و بحث مجموعه به کلی تمام شد.
خوب حالا بعد از تعجب کردن راجب مجموعه، تعجب بیشتر آن مربوط به فیلدهای آن سند است، ما الان این مجموعه رو کلا نداشتیم و با دستور ثبت این مجموعه را ساختیم، کی فیلدهای آن را تعریف کردیم؟هیچوقت اینکار را نمی کنیم. قدرت دیتابیس های NoSql در این است که اصلا نیازی به این کار ندارند. می دونم دارید تعجب می کنید اما بذارید یه مثل عمومی بزنم، شما یک حسابدار هستید و فاکتور های فروش شرکت را درون یک زونکن نگه می دارید، شما فاکتوری که پرینت شده را به صورت یکجا و کامل درون زونکن قرار می دهید، اما در برنامه حسابداری برای نگهداری اون اطلاعات یک جدول برای Header فاکتور درست شده، یک جدول برای نام مشتری ها، یک جدول برای آیتم های فاکتور و ..... . این کار یعنی شما فاکتور پرینت شده را تیکه تکیه کنی به هر کدوم یک شماره اختصاص بدی و هر تیکه هم درون یک زونکن قرار بدی. Mongo DB درست و منطقی کار می کند، من خودم از بس SQL کار کرده ام فکر می کردم این عجیب هست اما وقتی بیشتر وقت گذاشتم و خوندم به این نتیجه رسیدم که من اینقدر اون مدلی فکر کردم که از دنیای واقعی به دور شدم و Mongo DB (کلا No Sql ها )داره مثل دنیای واقعی عمل می کند. الان من می تونم خیلی راحت یک سند دیگر با فیلد های متفاوت را در مجموعه letter ذخیره کنم.
حالا خود دستور Insert چه نکاتی دارد؟
ترتیب کلید و مقدار آن در سند متفاوت است.(Case-Sensitive و Type-Sensitive)
>db.Collection_Name.Insert({"FirstName":"Behzad",
"LastName":"Khalili"})
>db.Collection_Name.Insert({"LastName":"Khalili",
"FirstName":"Behzad"})
دو سند بالا از نظر Mongo DB کاملا متفاوت می باشند.
>db.Collection_Name.insert({"FirstName":"Behzad",
"LastName":"Khalili",
"Age":22})
>db.Collection_Name.insert({"FirstName":"Behzad",
"LastName":"Khalili",
"Age":"young"})
دو سند بالا از نظر Mongo DB کاملا متفاوت می باشند.
سندها نمی توانند شامل کلید های تکراری باشند.
>db.Collection_Name.insert({"FirstName":"Behzad",
"FirstName ":"Khalili")
شما می توانید یک فیلد را به عنوان آرایه در نظر بگیرید!
همان طور که ملاحظه می کنید فیلد Dayeri به عنوان یک آرایه تعریف شده است. در JSON برای تعریف یک آرایه از [] استفاده می شود.
این قسمت از آموزش هم به پایان رسید، ما منتظر نظر شما برای بهبود روند آموزشی خود هستیم.
با تشکر خدا نگهدار