آموزش تکنولوژی MEAN

MEAN Framework for Web Developers
شنبه, ۷ آذر ۱۳۹۴، ۰۱:۵۹ ق.ظ

آموزش 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  برای تعریف یک آرایه از [] استفاده می شود.

 

 این قسمت از آموزش هم به پایان رسید، ما منتظر نظر شما برای بهبود روند آموزشی خود هستیم.

با تشکر   خدا نگهدار

 



نوشته شده توسط بهزاد خلیلی
ساخت وبلاگ در بلاگ بیان، رسانه متخصصان و اهل قلم
آموزش تکنولوژی MEAN

با سلام خدمت شما عزیزان
من بهزاد خلیلی و دوست خوبم حمیدرضا صدیق می خواهیم در این وبلاگ تکنولوژی MEAN را یه فارسی زبانان علاقه مند معرفی کنیم.
فریم ورک MEAN یک فریم ورک کامل (Full Stack) جاوا اسکریپت برای توسعه دهندگان وب است که در سالهای اخیر توانسته در برابر LAMP خودی نشان دهد.

طبقه بندی موضوعی
بایگانی
نویسندگان

آموزش 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  برای تعریف یک آرایه از [] استفاده می شود.

 

 این قسمت از آموزش هم به پایان رسید، ما منتظر نظر شما برای بهبود روند آموزشی خود هستیم.

با تشکر   خدا نگهدار

 

۹۴/۰۹/۰۷ موافقین ۴ مخالفین ۰

نظرات  (۴)

خیلی خیلی خیلی ممنون به خاطر آموزش های خیلی عالیتون
 mamnoonam az amoozeshe khoobetun nasretun kheili ghabele fahme mersi azin hame zahmati ke keshidin 
پاسخ:
ممنونم، خوش حالم که مفید بوده....
۱۴ آذر ۹۴ ، ۲۱:۱۷ محمد مغاری
سلام بر بهزاد عزیز
در متن نوشته بودی که

.همان طور که مشاهده می کنید ما مجموعه letter نداریم اما می خواهیم یک سند در این مجموعه قرار دهیم و دستور Insert  را اجرا کردیم، در اینجا خود Mongo DB چک کرده و متوجه شده که ما همچین مجموعه ای نداریم و اول آن را ساخته سپس آن سند را در مجموعه به ثبت رسانده است.  این امکان Mongo DB خیلی معرکه است.شما فکر کنید بدون اینکه جایی را در نظر گرفته باشید می گید من این سند را می خوام در این مجموعه ثبت کنم، اونم می گه باشه

چشم و میره این کار را انجام می ده!!!!

به نظر من این یکی از معایب mongo db  است. چرا که اگر برنامه نویس اسم مجموعه رو سهوا اشتباه بنویسه سیستم جلوی اشتباه برنامه نویس رو نمی گیره  و به صوت خود کار کلمه اشتباه واردشده را به عنوان مجموعه درنظر می گیره.

اصولا منطقی نیست که با شی ای که هنوز ساخته نشده بتونیم کار کنیم.



منتظر ادامه آموزش شما هستم.

پاسخ:
سلام بر شما مهندس عزیز
اگر اجازه بدی جواب سوال شما را کمی جلوتر عرض می کنم، این مشکلی که شما فرمودید کاملا درسته و 100% هم اتفاق می افتد، اما قابل کنترل و مدیریت است.
۱۱ آذر ۹۴ ، ۰۳:۰۸ محمد مجیبیان
خسته نباشید فراوان بهزاد جان،یه پشنهاد دارم واسه مطالب آموزشی،حالا که قرار شده شیوه آموزشی به صورت پروژه باشه به نظرم پروژه رو یکم بیشتر توضیح بدی که اصلا چی بوده بهتره،یا مثلا یه عکس کلی از جدول هایی که تو SQL مجبور بودی برای اون پروژه ایجاد بکنی رو بزاری بهتر میشه درک کرد که مانگو چقدر می خواد ساده بکنه کار رو،بازم ممنون بابت مطالب خوبت.
پاسخ:
مرسی عزیز
درسته من راجب پروژه باید بیشتر توضیح بدم اما فعلا می خوام خود دستور find و توضیح بدم بعد دوباره مبحث پروژه و پیش ببرم.اول می خواستم تو دل پروژه دستورات و بگم بعد یه جا دیدیم که یکی این کار و کرده بود و همه ناراضی بودن واسه همین تصمیمم عوض شد گفتم اول خود دستور و توضیح می دم بعد مثال کاربردی تو پروژه می تونه بهتر باشه، نظر شما چیه؟

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی