تخفیف ویژه

آموزش اتصال جاوا اسکریپت به Mongo DB توسط Node.js

‏  10 دقیقه
۲۰ فروردین ۱۳۹۹
آموزش اتصال جاوا اسکریپت به Mongo DB توسط Node.js

آموزش اتصال جاوا اسکریپت به Mongo DB توسط Node.js:

در این مقاله قصد داریم به ساخت پایگاه داده‌ی Mongo DB و انجام عملیات CRUD و نحوه‌ی اتصال آن به نود جی اس Node.js بپردازیم. شما در پایان این مقاله می‌توانید یکی از مهم‌ترین ماژول‌‌های دیتابیس که Mongo DB می‌باشد را پیاده سازی و به Node.js متصل کنید.پس با ما همراه باشید.

فهرست محتوای این مقاله

Mongo DB چیست؟

Mongo DB یک پایگاه داده‌ی متن باز و رایگان مانند Mysql است که از سال ۲۰۰۹ انتشار آن آغاز شده است. Mongo DB محدودیت‌‌های سایر پایگاه‌های داده را ندارد و همچنین یک پایگاه داده سندگرا بوده در نتیجه برخلاف پایگاه‌های داده‌ رابطه‌ ای اسناد شبیه به JSON را مدیریت می‌کند برای آشنایی بیشتر با Mongo DB پیشنهاد می‌کنیم مقاله‌ی Mongo DB چیست را مطالعه کنید.

درباره‌ی Node.js بخوانیم:

Node.js یک پلتفرم متن باز و رویداد محور است که بر پایه‌‌ی موتور جاوا اسکریپت گوگل کروم پایه گذاری شده است، از Node.js برای گسترش برنامه‌های سمت سرور و تحت شبکه استفاده می‌کنند. جهت کار با Node.js در پروژه‌‌های خود لازم است ابتدا آن را روی کامپیوتر خود نصب کنید اگر برای اولین بار است که از Node.js استفاده می‌کنید پیشنهاد می‌کنیم مقاله‌ی آموزش نصب Node.js را مطالعه کنید.

ساخت دیتابیس Mongo DB:

قدم اول: برای استفاده از دیتابیس Mongo DB ابتدا باید آن را فعال نماییم برای این‌کار دستور زیر را در ترمینال (command line) وارد می‌کنیم:

net start Mongo DB

در نتیجه‌ی دستور بالا پیام زیر نشان داده می‌شود:

The Mongo DB service is starting

The Mongo DB service was started successfully

قدم دوم : برای ساخت پایگاه داده و یا انجام هرگونه تغییرات در پایگاه داده ابتدا باید وارد پوسته‌‌ی Mongo DB بشویم. برای این کار کلمه‌‌ی زیر را درترمینال وارد می‌کنیم:

mongo

حال ما وارد پوسته‌ی Mongo DB شده‌ایم و آماده‌‌ی ساخت دیتابیس هستیم. قدم سوم : برای ساخت پایگاه داده از فرمول زیر استفاده می‌کنیم:

use Market_db

در دستور بالا use کلمه‌ی کلیدی و Market_db نام پایگاه داده‌ ای است که با رعایت قوانین نام گذاری در پایگاه داده انتخاب شده است .

برای نمایش همه‌ی پایگاه‌های داده قطعه کد زیر را در ترمینال وارد می‌کنیم:

show dbs

نتیجه‌ ی قطعه کد بالا:

admin 0.000GB

Market_db 0.000GB

local 0.000GB

دقت کنید در نتیجه‌ی نشان داده شده دو پایگاه داده را می‌بینیم که ما ایجاد نکردیم ولی به طور پیش فرض در Mongo BD ایجاد شده است و حجم آن‌ها صفر گیگا بایت هست. پایگاه داده‌‌ی ما (Market_db)، چون داده‌ ای فعلا درونش ذخیره نکرده ایم حجم آن صفر است.

بیشتر بدانید: اگر قبلا پایگاه داده‌ ای را ایجاد کرده باشید می‌توانید با استفاده از قطعه کد بالا به آن متصل شوید. برای مثال فرض کنید پایگاه داده‌ی Employees را ایجاد کرده‌ اید با اجرای قطعه کد زیر به Employees متصل می‌شوید :

use Employees

پیکر بندی پایگاه داده‌‌ی Mongo DB:

در ادامه‌ی مقاله‌ی آموزش اتصال جاوا اسکریپت به Mongo DB توسط Node.js، پیکربندی پایگاه داده‌ی Mongo DB را انجام می‌دهیم.

در پایگاه داده‌ی Mongo DB همانند پایگاه داده‌‌ی MySql با سه مفهوم رو به رو هستیم . Collection که هم مفهوم با table یا همان جدول در Mysql است . Document که هم مفهوم با row یا همان ردیف در Mysql است . Column  که هم مفهوم با field در Mysql است . قصد داریم در پایگاه داده‌ی Market_ db ، یک collection با نام users ، سه document و سه column را بسازیم .

- نحوه‌ی ایجاد Collection در Market_db:

برای ایجاد collection ، از کلمه‌ی کلیدی .db و سپس نام Collection استفاده می‌کنیم:

db.users

با قطعه کد فوق ما یک collection با نام users ایجاد کردیم.

- نحوه‌ی ایجاد document و column در Market_db:

برای ایجاد document و column در users از دستور insert به صورت زیر استفاده می‌کنیم:

db.users.insert({'name':'Ali', 'age':28,'password':'@123'})

با اجرای قطعه کد بالا سه document با نام‌های name، age، password و سه column با مقادیر Ali، 28،@123 در users ایجاد می‌شود. برای نمایش محتویات users از دستور زیر استفاده می‌کنیم:

db.users.find().pretty()

در نتیجه‌ی قطعه کد بالا داریم:

{

"_id" :ObjectId("59bd2e7ce524b733f14dd65"),

"name" : "Ali",

"age" : 28,

"password" : "@123"

}

برای اضافه کردن document و column کافی است از دستور insert مانند بالا استفاده کنید. برای مثال فرض کنیم می‌خواهیم یک کاربر دیگر را به collection اضافه کنیم در این صورت با استفاده از کد زیر document و column را اضافه می‌کنیم:

db.users.insert({'name':'Masih', 'age':26,'password':'@345'})

در نتیجه با اجرای قطعه کد زیر داریم :

db.users.find().pretty()

{

"_id" :ObjectId("59bd2e7ce524b733f14dd65"),

"name" : "Ali",

"age" : 28,

"password" : "@123"

}

{

"_id" : ObjectId("59bf280cb8e797a22c654229"),

"name" : "Masih",

"age":26,

"password" :"@345"

}

- نحوه‌ی بروزرسانی document و column در پایگاه داده Market_db:

برای این‌کار از update استفاده می‌کنیم. در ادامه قصد داریم مقدار document با نام name را از ali به Moin تغییر دهیم :

db.users.update({"name":"Ali" }, {$set:{"name":"Moin"}},{multi:true})

حال وقتی که کد زیر را وارد ترمینال می‌کنیم :

db.users. find().pretty()

محتوای تغییر یافته‌ی زیر را مشاهده می‌کنیم :

{

"_id" :ObjectId("59bd2e7ce524b733f14dd65"),

"name" : "Moin",

"age" : 28,

"password" :"@123"

}

- نحوه‌ی حذف document و column در پایگاه داده Market_db:

برای این‌کار از remove استفاده می‌کنیم. در قطعه کد زیر قصد داریم document با نام password را پاک کنیم :

db . users . remove ({ 'password':'@123' },1)
writeResult({"nRemoved " :1 })

حال با استفاده از قطعه کد زیر نتیجه را مشاهده می‌کنیم:

db.users.find().pretty()

{

_"id" : ObjectId("59bf280cb8e797a22c654229"),

"name" : "Masih",

"age" : 26,

"password" : "@345"

}

- نحوه‌ی حذف collection در Market_db:

برای حذف کل collection از دستور زیر استفاده می‌کنیم:

db.users.drop()

نتیجه‌ی قطعه کد بالا true می‌باشد که به معنی حذف collection است.

true

آموزش اتصال جاوا اسکریپت به Mongo DB توسط Node.js:

برای ایجاد اتصال ابتدا باید درایور مربوط به Mongo DB را درون Node.js نصب کنیم و این‌کار را با استفاده از npm محبوب انجام می‌دهیم. دستور زیر را در ترمینال وارد می‌کنیم:

npm install mongodb --save

با اجرای قطعه کد بالا درایور مربوط به Mongo DB نصب می‌شود. با کدsave-- اطلاعات مربوط به پکیج را داخل pakage.js قرار می‌دهیم تا به راحتی بتوانیم به فایل‌ها دسترسی داشته باشیم. و در نهایت با چند قطعه کد ساده به Mongo DB متصل می‌شویم:

var MongoClient = require('mongodb').MongoClient; 
var url = 'mongodb:// localhost/Market_db'; 
MongoClient.connect(url, function(err, db){
var cursor = db.collection(Market_db).find();
 cursor.each(function(err, doc) { 
console.log(doc); 
   }); 
});

 

در خط اول MongoClient را که مربوط به کتابخانه‌‌ی MongoDB می‌باشد با استفاده از require فراخوانی کرده و دورن یک متغیر با نام MongoClient ذخیره می‌کنیم. خط دوم به پایگاه داده‌ی MongoDB که روی لوکال نصب شده است متصل می‌شویم. توجه داشته باشید که در خط دوم پس از local host نام پایگاه داده‌ ای که می‌خواهیم به آن متصل شویم را می‌آوریم (برای مثال Market_db )  و در اینجا Market_db اسم پایگاه داده‌ ای می‌باشد که می‌خواهیم به آن متصل شویم.در ادامه هم با یک دستور شرطی ساده اتصال خود به پایگاه داده را چک می‌کنیم.

حال اگر کد بالا را در یک فایل، مثلا با نام mongodbConnect.js در یک درایو دلخواه (در اینجا درایو D ) درون پوشه Node ذخیره کنیم، با اجرای آن با پیغام زیر روبرو می‌شویم:

D:\Node>node MongodbConnect.js

Connected to sweet mongodb

به همین سادگی و با همین چند خط کد ساده، پایگاه دادهی ساخته شده توسط Mongo DB را به جاوا اسکریپت متصل کردیم.

پیکر بندی پایگاه داده‌ی Mongo DB با Node.js:

ما پایگاه داده‌ی Market_db را ایجاد کرده و به javascript با استفاده از Node.js متصل کردیم. در ادامه‌ی مقاله‌ی آموزش اتصال جاوا اسکریپت به Mongo DB توسط Node.js، قصد داریم تا با استفاده از کد‌های java script یک collection،document و column را به پایگاه داده اضافه کرده و اطلاعات موجود در پایگاه داده را استخراج کنیم (اصطلاحا واکشی کنیم). -نحوه‌ی افزودن یک collection به پایگاه داده‌ ی Market_db

برای اضافه کردن یک collection جدید در پایگاه داده با استفاده از Node.js از متد create collection استفاده می‌کنیم. در قطعه کد زیر با استفاده از این متد می‌خواهیم collection، customers را به پایگاه داده اضافه کنیم:

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost/Market_db";
MongoClient.connect(url, function(err, db) { 
if (err) throw err;
 var dbo = db.db("mydb"); 
dbo.createCollection("customers", function(err, res) { 
if (err) throw err;
 console.log("Collection created!");
 }); 
});

با اجرای قطعه کد بالا collection با نام customers به پایگاه داده‌ی Market_db افزوده می‌شود.

-نحوه‌ی افزودن یک document و column در پایگاه داده‌ی Market_db:

برای این‌کار از متد insertOne از کتابخانه‌ی MongoDB استفاده می‌کنیم. به قطعه کد زیر توجه کنید:

var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost/Market_db'; 
MongoClient.connect(url, function(err, db) {
 db.collection('customers').insertOne({ 
customerName: "Ehsan" ,
 customerPass: @345 
  }); 
});

در قطعه کد بالا با استفاده از متد insertOne، دو document با عناوین customerName و customerPass با column‌های Ehsan و @345 ساختیم. حال برای بررسی اینکه داده‌ها به درستی در پایگاه داده درج شده است یا خیر، ابتدا با توجه به مواردی که قبلا در این مقاله گفته شد وارد پایگاه داده Market_db در ترمینال شده و قطعه کد زیر را وارد می‌کنیم:

db.customers

با اجرای قطعه کد فوق وارد collection ذکر شده (customers) می‌شویم. حال قطعه کد زیر را اجرا می‌کنیم:

db.customers.find().pretty ()

با اجرای دستور فوق ، نتیجه‌ی زیر را مشاهده می‌کنیم:

{

_"id" :ObjectId("59bd2e7ce524b733f14dd65"),

"customersName" : "Ehsan",

"customersPass" : @345

}

-نحوه‌ی بروزرسانی document‌ها در پایگاه داده‌ی Market_db:

اسناد را می‌توان در یک مجموعه با استفاده از کد updateOne از کتابخانه‌ی MongoDB بروزرسانی کرد. در قطعه کد زیر می‌خواهیم مقدار customerName را از Ehsan به Masih تغییر دهیم :

var MongoClient = require('mongodb').MongoClient; 
var url = 'mongodb://localhost/Market_db'; 
MongoClient.connect(url, function(err, db) { 
db.collection('customers').updateOne({
 "customerName": "Ehsan" }, { $set: { "customerName": "Masih" }
 }); 
});

برای مشاهده‌ی قطعه کدی که تغییر داده ایم ، کد زیر را در ترمینال وارد می‌کنیم:

db.customers

db.customers.find().pretty ()

و نتیجه‌ی زیر را مشاهده می‌کنیم:

{

"_id" :ObjectId("59bd2e7ce524b733f14dd65"),

"customersName" : "Masih" ,

"customersPass" : @345

}

- حذف document و column در پایگاه داده‌ی Market_db:

برای حذف یک document از مجموعه‌ی customers از روش deleteOne استفاده می‌کنیم. به قطعه کد زیر دقت کنید:

var MongoClient = require('mongodb').MongoClient; 
var url = 'mongodb:// localhost:27017/ Market_db '; 
MongoClient.connect(url, function(err, db) {
 db.collection('customers').deleteOne( { "customerName": "Masih" });
 });

در کد بالا customerName با column، Masih را حذف می‌کنیم. برای دیدن نتیجه از روش ذکر شده در دو مورد بالا استفاده می‌کنیم.

- نحوه‌ی جستجو و واکشی اطلاعات در پایگاه داده‌ی Market_db در Node.js:

برای این‌کار از متد find از کتابخانه‌ی Mongo DB استفاده می‌کنیم. به قطعه کد زیر توجه کنید:

var MongoClient = require('mongodb').MongoClient; 
var url = 'mongodb:// localhost:27017/Market_db'; 
MongoClient.connect(url, function(err, db) { 
var cursor = db.collection('customers').find();
 cursor.each(function(err, doc) { 
console.log(doc); 
});
 });

در قطعه کد بالا ما یک اشاره گر با نام cursor تعریف می‌کنیم اشاره گر‌ها برای اشاره به یک رکورد خاص در پایگاه داده استفاده می‌شوند. همچنین در ادامه مجموعه یا collection که ساختیم با نام customers را برای واگذاری سوابق مشخص می‌کنیم. در ادامه از متد ()find برای مشخص کردن اینکه می‌خواهیم همه‌ی اسناد را از مجموعه customers استخراج کنیم ، استفاده می‌کنیم. و در بخش پایانی از یک تابع جهت چاپ محتوای این سند استفاده می‌کنیم.

جمع‌بندی:

در این مقاله یاد گرفتیم چطور یک پایگاه داده‌ی Mongo DB بسازیم و آن را پیکربندی کنیم و همچنین آموختیم پایگاه داده‌ی ایجاد شده را چگونه با استفاده از Node.js به زبان جاوا اسکریپت متصل کنیم. در ادامه آموختیم چگونه اطلاعات موجود در پایگاه داده Mongo DB را با استفاده از Node.js استخراج کنیم و همچنین پایگاه داده ساخته شده را چگونه در Node.js پیکربندی کنیم. به همین سادگی می‌توانیم یک پایگاه داده را در Mongo DB ایجاد کرده و با استفاده از Node.js در پروژه‌ی خود استفاده کنیم. با استفاده از جاوا اسکریپت شما می‌توانید بدون هیچ مشکلی فقط به توسعه‌ی برنامه خود فکر کنید.

اگر به یادگیری بیشتر در زمینه جاوا اسکریپت علاقه داری، با شرکت در دوره آموزشی متخصص جاوا اسکریپت در کمتر از یکسال به یک متخصص JS همه فن حریف تبدیل می‌شوی که آماده‌ی استخدام، دریافت پروژه و یا فول-استک شدن هستی.

چه امتیازی به این مقاله می دید؟
نویسنده فاطمه افشار
وقتی به برنامه نویسی فکر می کنم ، می رسم به این جمله -> " عشق چیز عجیبیه جدا ! "
ارسال دیدگاه
خوشحال میشیم دیدگاه و یا تجربیات خودتون رو با ما در میون بذارید :

 

نظرات کاربران

حمید

مرسی بابت مقاله خوب و قدم به قدمتون

نازنین کریمی مقدم

ممنون که با ما همراه هستید 🙂

علی

به نظرم استفاده از mongoose خیلی راحت تر هستش و معمولا هم از اون بیشتر استفاده میکنن
ولی باز بابت مقاله خوبتون تشکر میکنم

فاطمه افشار

صحیح، ممنونم که دیدگاهتون رو با ما به اشتراک گذاشتید . خواهش میکنم

ما در سون لرن با محدودسازی دسترسی آزاد به اینترنت مخالفیم     اطلاعات بیشتر