مقدمه ای بر MongoDB

یکشنبه 18 تیر 1396

در این مقاله قصد داریم که نحوه کار با MongoDB در سی شارپ را برای مبتدیان آموزش بدهیم.این آموزش شامل مقدماتی از NoSQL و MongoDB و برنامه C# console و Azure CosmosDB است.با ما همراه باشید.

مقدمه ای بر MongoDB

درابتدا بیایید ببینیم که No Sql چیست؟

NoSql (در اصل از کلمه Non sql ، بدون رابطه(non relational) یا  not only SQL گرفته شده است) یک زبان کوئری نویسی است که از مکانیزم های مختلف ذخیره و بازیابی اطلاعات استفاده میکند و در پایگاه های داده های بی رابطه(non-relational)  استفاده میشود.

برخلاف رابطه های جدولی (tabular relations) که در پایگاه داده های رابطه ای استفاده میشود ، NoSql داده ها را در یک جفت کلید-مقدار(key-value) ذخیره میکند.

ساده ترین مثال از NoSQL مانند زیر است:

{ "FirstName" : "Ali", "Age" : 25, "Email" : Ali@gmail.com" }

یک لحظه صبر کنید!این مثال یه چیزی را به خاطرمان می آورد! این مثال چقدر شبیه Json است.بعله درست است!اکثر پایگاه داده های بدون رابطه از JSON به عنوان فرمت ورودی / خروجی مورد نظر خود استفاده می کنند.

Json چیست: json یک روش برای بسته بندی و انتقال داده ها است , شما میتونید از جی سان برای انتقال داده ها و ذخیره سازی داده های خودتون استفاده کنید.

حالا باید با پلت فرمی که دستورات NoSql را اجرا میکنند آشنا بشویم.ما دستورات Sql در پایگاه داده های رابطه ای (مانند :Microsoft SQL Server و  Oracle و MySQL و غیره ) اجرا میکنیم ، دستورات NOSql نیز در پایگاه داده های بدون رابطه مانند: MongoDB و RavenDB و CouchDB و DocumentDB و غیره اجرا میشوند.در این مقاله بر روی MongoDB متمرکز هستیم.قبل از شروع کار با MongoDB ، شما اول باید بدانید که در چه زمان و در کجا NoSql باید استفاده کنید.

MongoDB یک دیتابیس رایگان و اوپن سورس است که تحت مجوز GNU Affero General Public منتشر شده است که داده ها را در فرمت سندگرا (document-oriented) ذخیره می کند.

MongoDB از اسناد با الگو Json شکل استفاده میکند. و داده ها را با فرمت  BSON یا Binary JSON ذخیره می کند.اما از Json به عنوان فرمت ورودی / خروجی ترجیح می دهد استفاده کند.

همانطور که در بالا گفتیم ، MongoDB یک نرم افزار رایگان و اوپن سورس است که براحتی میتوانیم آن را از وب سایت رسمی  دانلود کنیم.

پس از نصب باید چک کنید که آیا همه چیز درست کار میکند یا نه.

به طور پیش فرض ، MongoDB  داده ها را به صورت پیشفرض در آدرس سیستمی C:\data\db ذخیره میکند ، اما این با پاس دادن نام آن با دستور   config-- در command line قابل تنظیم است. و به طور پیش فرض ، دایرکتوری  C:\data\db موجود نیست و درهنگام نصب MongoDB این دایرکتوری ایجاد نمیشود.

شما باید به صورت دستی آن را ایجاد کنید یا مسیر سیستم را به دایرکتوری دلخواه خود تنظیم کنید.

اگر این کار را نکنید سرور MongoDB به درستی کار نخواهد کرد.

اجازه ندهید که با مسیر سیستمی تنظیم شده وارد شود و آن را  به مسیر پیش فرض سیستمی ساده کنید.

حالا command prompt را با فشردن کلید ترکیبی Windows + R و تایپ کردن cmd و زدن Enter باز کنید .

با اجرای این دستورات به دایرکتوری "C:\Program Files\MongoDB\Server\3.4\bin" بروید. 

cd ..\..
cd "C:\Program Files\MongoDB\Server\3.4\bin"

اگر شما از سمت پوشه به سمت این دایرکتوری حرکت کنید ، شما تعدادی فایل را مشاهده خواهید کرد که برای شروع کار فقط به دو فایل اجرایی mongod.exe و mongo.exe نیاز دارید.

mongodb.exe برای فرایند خود پایگاه داده است و mongo.exe یک command-line برای کاربر است که دستورات NoSQL را اجرا میکند.حالا در command prompt ، دستور "mongod.exe" را تایپ کرده و Enter را فشار دهید.

اگر متن "waiting for connections on port 27017" نشان داده شد ، شما متوجه می شوید که سرور MongoDB در حال اجرا است.این command prompt را کوچک (Minimize) کنید و یک پنجره command prompt دیگر باز کنید.به دایرکتوری "C:\ProgramFiles\MongoDB\Server\3.4\bin"  بروید و "mongo.exe" را اجرا کنید.

این برای کاربر است و برای اجرا کردن دستورات NoSql است.بنابراین، شروع به نوشتن چند دستور برای درک بهتر می کنیم.

db.adminCommand( { listDatabases: 1 } )

این دستور لیستی از پایگاه داده هایی را که در سرور MongoDB هستند ، نمایش می دهد. "test" یک پایگاه داده پیش فرض است.

db.getCollectionNames()

این دستور لیست مجموعه هایی (collection) که در پایگاه داده فعلی موجود هستند را نمایش می دهد."things"مجموعه پیشفرض است.

p1 = {"PersonFirstName":"Alex","PersonAge":28}
db.things.save(p1)

دستور اول یک سند موقت p1 ایجاد می کند که حاوی اطلاعات واقعی است و در مجموعه "things" ذخیره می شود.

در اینجا سند مانند ( word(.docx )، text(.txt و غیره یک فایل نیست.بلکه به صورت  row/tuple که حاوی داده هایی هستند.

کلیدهای آن ("PersonFirstName" or "PersonAge") به عنوان عناصر سند شناخته می شوند.دستور دوم، سند موقت P1 را در مجموعه "things" به طور دائمی ذخیره می کند.

db.things.find()

این فرمان لیست اسناد (documents) موجود در مجموعه "things" (که حداکثر آن 20 تا است) را نشان می دهد.

در اینجا، متوجه می شوید که یک المنت دیگر "_id" وجود دارد که شما آن را ایجاد نکرده اید.این برای تولید خودکار برای شناسایی منحصر بفرد بودن سند است.شما می توانید  آن را "کلید اولیه" تصور کنید.

findP = {"PersonFirstName":"Ali"}
db.things.find(findP)

این دستور سند خاصی را با توجه به پارامترهای پاس داده شده به نمایش در خواهد آورد.

testP = {"PersonAge":28}
setP = {"PersonFirstName":"Brandt"}
db.things.updateOne(testp,{ $set : setp })

این دستور عنصر "Person FirstName" را از "Ali" به "Pouriya" از سند خاصی با "PersonAge" برابر 28 به روز رسانی میکند.

db.things.deleteOne(testP)

این دستور سند خاصی را حذف میکند.

این ها دستورات اصلی Crudعملیات بودند.حالا برای بستن mongo.exe در سمت کاربر ، دستور "exit" را تایپ کرده و Enter را فشار دهید.این پنجره بسته شد.همچنین برای بستن mongod.exe  کلید ترکیبی Ctrl + C را فشار دهید.

آموزش سی شارپ

آموزش mongodb

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان
  • C#.net
  • 3k بازدید
  • 2 تشکر

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

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید