در این مقاله قصد داریم
یک Api تحت وب را با استفاده از فریمورک ASP.NET Core توسعه
دهیم تا عملیات CRUD را بر روی دیتابیس MongoDb که یکی از محبوبترین دیتابیسهای NoSql است، انجام دهد. قبل از شروع کار باید ویژوال استودیو نسخهی 2019 را نصب داشته باشید؛ بهطوریکه
ورک لود ASP.NET and web development را هم حتما همراه آن نصب کرده باشید.
علاوه بر آن باید .Net Core SDK 3.0+ و دیتابیس MongoDb را هم نصب
کنید که میتوانید آنها را از آدرسهای زیر دانلود کنید. نگران نصب MongoDb هم نباشید
چون نکته خاصی ندارد.
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-windows/
https://dotnet.microsoft.com/download/dotnet-core
نسخهی جاری MongoDb، 4.4 است که پس از نصب، به صورت پیشفرض در آدرس C:\Program
Files\MongoDB قرار میگیرد. در مسیر C:\Program
Files\MongoDB\Server\4.4\bin فایلهای اصلی MongoDb قرار دارند و برای تعامل با MongoDb، به این فایلها نیاز خواهیم داشت. پس برای اینکه به راحتی بتوان در هر جای سیستم از طریق پاورشل به این فایلها دسترسی داشته
باشید، این مسیر را به Path environment variable ویندوز
اضافه کنید.
MongoDb دارای یک بخش
اصلی یا اصطلاحا یکdaemon است که وظیفهی آن، پردازش
درخواستهایی است که برای کار با دادهها صادر میشود. در حقیقت همه کارهایی که ما
با دادهها انجام میدهیم مثلا دسترسی به دادهها و دستکاری آنها، از طریق این daemon انجام میگیرد و پشت صحنهی این daemon، با Storage Engine کار خواهد کرد. برای اجرای daemon، پاور شل
را باز کنید و دستور mongod را وارد کنید. اگر با تنظیمات پیشفرض اجرا کنید، بر روی پورت 27017 بالا آمده و
فایلهای دیتابیس را هم در مسیر C:\data\db قرار میدهد. اگر این مسیر را نداشته
باشید، با خطا مواجه میشوید. یا باید این مسیر را تعریف کنید و یا از سوئیچ dbpath -- استفاده
کنید تا مسیر فایل دیتابیس را تغییر دهید. پس پاور شل را باز کنید و دستور زیر را
وارد کنید.
>> mongod --dbpath C:\BooksData
پس از اجرا شدن
daemon ،
باید از طریق
شل
mongo که یک شل جاوااسکریپتی است، به آن متصل شویم. از طریق این شل میتوان کوئریها و دستورات دستکاری
دادهها را بر روی دیتابیس
MongoDb اجرا کنیم. پس یک کنسول پاورشل جدید را باز کرده و دستور
زیر را در آن وارد کنید.
پس از متصل شدن به شل،
از طریق دستور
use ، یک دیتابیس را به
نام
BookstoreDb بسازید. بنابراین دستور زیر
را وارد کنید.
توجه کنید اگر از قبل این دیتابیس وجود داشته
باشد، از آن استفاده میکند و گرنه آن را خواهد ساخت. بعد از اینکه پیغام
switched
to db BookstoreDb را مشاهده کردید، میتوانید هر جا که به
این دیتابیس نیاز داشته باشید، از دستور db استفاده نمایید که اشاره به دیتابیسی دارد که آن را use کردهایم. بعد از ساختن دیتابیس،
باید یک کالکشن بسازید. کالکشنها را میتوان معادل جداول، در دیتابیسهای رابطهای
تصور کرد. با دستور createCollection می توان اینکار را
انجام داد. برای اینکار دستور زیر را وارد کنید.
>> db.createCollection('Books')
با این دستور، یک
کالکشن با نام
Books ساخته میشود. اگر پیغام {
ok"
: 1"
} را دیدید، مطمئن باشید که کالکشن Books به درستی
ساخته شدهاست. در واقع بعد از ساختن اولین کالکشن، دیتابیس ساخته میشود. با دستور
show dbs میتوانید دیتابیسهای ساخته شده را ببینید. بعد از ساختن کالکشن، میخواهیم مقداری دیتا
را در آن قرار دهیم. معادل رکورد در دیتابیسهای رابطهای، در دیتابیس مونگو دیبی، Document نام دارد که مانند رکوردهای دیتابیسهای رابطهای نیست و ساختار و اسکیمای خاصی ندارد؛ یعنی میتوان هر دیتایی را با هر ساختاری در آن ذخیره کرد. میخواهیم دو Document را به کالکشن Books اضافه کنیم. پس دستور زیر را وارد میکنیم. توجه کنید دادهها با ساختار json وارد میشوند.
>> db.Books.insertMany([{'Name':'Design Patterns','Price':54.93,'Category':'Computers','Author':'Ralph Johnson'}, {'Name':'Clean Code','Price':43.15,'Category':'Computers','Author':'Robert C. Martin'}])
بعد از اجرای دستور بالا، نتایج زیر را در خروجی میبینید که گویای این مطلب است که دو Document جدید اضافه شدهاست و خود سرور، به هر یک از
داکیومنتها، یک شناسه یا آی دی اختصاص دادهاست و Ack درست هم برگشت داده شدهاست که به معنای انجام درست کار است. اگر میخواهید خودتان به داکیومنتهایی که میسازید آی دی بدهید، باید از پراپرتی id_ استفاده نمایید. {
"acknowledged" : true,
"insertedIds" : [
ObjectId("5bfd996f7b8e48dc15ff215d"),
ObjectId("5bfd996f7b8e48dc15ff215e")
]
}
برای اینکه محتویات کالکشنی
را مشاهده کنید، دستور زیر را وارد کنید. همانطور که اشاره شد، db، به دیتابیس ساخته شده اشاره دارد؛ Books همان کالکشنمان است و با استفاده از متد find میتوان دادههای کالکشن را جستجو کرد که در این مثال ما، هیچ فیلتری به آن ندادهایم. پس در نتیجه تمام دیتاها را بر میگرداند. متد pretty هم دادههای برگشتی را در یک ساختار مرتب نمایش میدهد.
>> db.Books.find().pretty()
و خروجی زیر را مشاهده
خواهید کرد {
"_id" : ObjectId("5bfd996f7b8e48dc15ff215d"),
"Name" : "Design Patterns",
"Price" : 54.93,
"Category" : "Computers",
"Author" : "Ralph Johnson"
},
{
"_id" : ObjectId("5bfd996f7b8e48dc15ff215e"),
"Name" : "Clean Code",
"Price" : 43.15,
"Category" : "Computers",
"Author" : "Robert C. Martin"
}
حالا دیتابیس ما آماده شدهاست. در بخشهای بعدی با استفاده از فریم ورک ASP.NET Core Web Api ، Api هایی خواهیم نوشت
که دادههای این دیتابیس را به بیرون ارائه خواهد داد.