شروع کار با MongoDB در سی شارپ

سی شارپ

در این مقاله میخواهیم راجب شروع کار با MongoDB در سی شارپ توضیح دهیم. در مقاله ی قبلی، به دانشی اندک در رابطه با مبانی MongoDB دست پیدا کردید. این مقاله بر روی انجام عملیات های CRUD از یک برنامه ی کنسولی سی شارپ تمرکز خواهد کرد.

MongoDB در سی شارپ

اگرقسمت اول  آموزش ما را نخوانده‏ اید همواره می‏توانید در لینک‏ زیر مشاهده کنید.

مکانیزم کاری برای برنامه های تحت وب و برنامه های تحت دسکتاپ یکسان خواهد بود.

mongod.exe را در خط فرمان باز کنید تا سرور MongoDB را ، در زمان اجرای برنامه ی C# خود ، در حال کار نگه داریم.

برای شروع ؛ Visual Studio را باز کرده و یک پروژه ی C# Console Application ایجاد کنید.

کار با MongoDB

حال، جهت تعامل با سرور پایگاه داده، به درایورهای .NET برای MongoDB نیاز خواهیم داشت.

بنابراین، بر روی solution راست کلیک کرده و به “Manage NuGet Packages” بروید. در نوار جستجو، “MongoDB” را تایپ کرده و اولین پکیجی که نمایان می شود را نصب کنید.

 Update

کار با MongoDB

به همین سادگی کارتان با درایورها تمام شده و اکنون می توانید به سراغ کد بروید.

ابتدا، برای اتصال به پایگاه داده، نیاز به رشته ی اتصال داریم. رشته ی اتصال را زمانیکه mongod.exe را اجرا می کنید، دریافت خواهید کرد.

کار با MongoDB

سپس برای تعامل با سرور نیاز به یک سرویس گیرنده ی MongoDB داریم.

MongoClient dbClient = new MongoClient("mongodb://127.0.0.1:27017");  

بر روی “MongoClient” کلیک کرده، کلیدهای “Ctrl + .” را فشار داده و Enter را برای افزودن فضای نام “MongoDB.Drivers” فشار دهید.

حال، بیایید سعی کنیم برخی فرمان های پایگاه داده را اجرا کنیم.

//Database List  
var dbList = dbClient.ListDatabases().ToList();
  
Console.WriteLine("The list of databases are :");  
foreach (var item in dbList)  
{  
   Console.WriteLine(item);  
}

این کد، لیستی از پایگاه داده های حاضر در Server را نشان می دهد. بسیار آسان است، اینطور نیست؟
بیایید نگاهی به دیگری بیندازیم.

//Get Database and Collection  
IMongoDatabase db = dbClient.GetDatabase("test");  
var collList = db.ListCollections().ToList();  
Console.WriteLine("The list of collections are :");  
foreach (var item in collList)  
{  
   Console.WriteLine(item);  
}  

اکنون، زمان برخی عملیات های CRUD است.

همانطور که در پست پیشین خود اشاره کردم، JSON فرمت ارجح ورودی/خروجی است اما اسناد در فرمت BSON Binary JSON دودویی در پایگاه داده ذخیره می شوند.

بنابراین، در اینجا از شیء کلاس BsonDocument برای ذخیره ی داده ها استفاده خواهیم کرد.

Create

var things = db.GetCollection<BsonDocument>("things");  
  
//CREATE  
BsonDocument personDoc = new BsonDocument();  
  
//Method 1  
BsonElement personFirstNameElement = new BsonElement("PersonFirstName", "Sankhojjal");  
personDoc.Add(personFirstNameElement);  
  
//Method 2  
personDoc.Add(new BsonElement("PersonAge", 23));  
  
things.InsertOne(personDoc);  

در این قطعه کد، ابتدا مجموعه ی فعلی را بازیابی می کنیم. سپس، یک شیء BsonDocument، که می خواهیم داده های خود را در آن ذخیره کنیم، ایجاد می کنیم.

در Method1، نشان داده ام که چگونه بطور صریح و روشن از یک متغیر شیء BsonElement برای ذخیره ی جفت کلید مقدار ایجاد کرده و سپس آن را به شیء BsonDocument اضافه کنیم.

در Method2، متغیر شیء BsonElement ایجاد نکرده ام، در عوض، شیء را مستقیما به عنوان پارامتر ارسال کرده ام.

عبارت آخر، داده ها را در مجموعه ی “ things ”درج می کند.

Read

//READ  
var resultDoc = things.Find(new BsonDocument()).ToList();  
foreach (var item in resultDoc)  
{  
   Console.WriteLine(item.ToString());  
}  

Update (بروزرسانی)

//UPDATE  
BsonElement updatePersonFirstNameElement = new BsonElement("PersonFirstName", "Souvik");  
  
BsonDocument updatePersonDoc = new BsonDocument();  
updatePersonDoc.Add(updatePersonFirstNameElement);  
updatePersonDoc.Add(new BsonElement("PersonAge", 24));  
  
BsonDocument findPersonDoc = new BsonDocument(new BsonElement("PersonFirstName", "Sankhojjal"));  
  
var updateDoc = things.FindOneAndReplace(findPersonDoc, updatePersonDoc);  
  
Console.WriteLine(updateDoc); 

Delete (حذف)

//DELETE  
BsonDocument findPersonDoc = new BsonDocument(new BsonElement("PersonFirstName", "Sourav"));  
  
things.FindOneAndDelete(findPersonDoc);  

source code/کد منبع C# بطور کامل در ادامه آورده شده است.

using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Text;  
using System.Threading.Tasks;  
using MongoDB.Driver;  
using MongoDB.Bson;  
  
namespace ConsAppMongoDBCRUD  
{  
    class Program  
    {  
        static void Main(string[] args)  
        {  
            try  
            {  
                MongoClient dbClient = new MongoClient("mongodb://127.0.0.1:27017");  
  
                //Database List  
                var dbList = dbClient.ListDatabases().ToList();  
  
                Console.WriteLine("The list of databases are :");  
                foreach (var item in dbList)  
                {  
                    Console.WriteLine(item);  
                }  
  
                Console.WriteLine("\n\n");  
  
                //Get Database and Collection  
                IMongoDatabase db = dbClient.GetDatabase("test");  
                var collList = db.ListCollections().ToList();  
                Console.WriteLine("The list of collections are :");  
                foreach (var item in collList)  
                {  
                    Console.WriteLine(item);  
                }  
  
                var things = db.GetCollection<BsonDocument>("things");  
  
                //CREATE  
                BsonElement personFirstNameElement = new BsonElement("PersonFirstName", "Sankhojjal");  
  
                BsonDocument personDoc = new BsonDocument();  
                personDoc.Add(personFirstNameElement);  
                personDoc.Add(new BsonElement("PersonAge", 23));  
  
                things.InsertOne(personDoc);  
  
                //UPDATE  
                BsonElement updatePersonFirstNameElement = new BsonElement("PersonFirstName", "Souvik");  
  
                BsonDocument updatePersonDoc = new BsonDocument();  
                updatePersonDoc.Add(updatePersonFirstNameElement);  
                updatePersonDoc.Add(new BsonElement("PersonAge", 24));  
  
                BsonDocument findPersonDoc = new BsonDocument(new BsonElement("PersonFirstName", "Sankhojjal"));  
  
                var updateDoc = things.FindOneAndReplace(findPersonDoc, updatePersonDoc);  
  
                Console.WriteLine(updateDoc);  
  
                //DELETE  
                BsonDocument findAnotherPersonDoc = new BsonDocument(new BsonElement("PersonFirstName", "Sourav"));  
  
                things.FindOneAndDelete(findAnotherPersonDoc);  
  
                //READ  
                var resultDoc = things.Find(new BsonDocument()).ToList();  
                foreach (var item in resultDoc)  
                {  
                    Console.WriteLine(item.ToString());  
                }  
            }  
            catch (Exception ex)  
            {  
                Console.WriteLine(ex.Message);  
            }  
  
            Console.ReadKey();  
        }  
    }  
} 

بسیار آسان است !!! اینطور نیست؟

 

زهره سلطانیان

نوشته‌های مرتبط

دیدگاه‌ها

*
*

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.