🎁 شروع برنامه نویسی را از ما هدیه بگیرید!
۰ ثانیه
۰ دقیقه
۰ ساعت
۱۰ دیدگاه نظر فاطمه افشار
آموزش اتصال جاوا اسکریپت به 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 را مطالعه کنید.

اگر به مباحث برنامه نویسی 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 همه فن حریف تبدیل می‌شوی که آماده‌ی استخدام، دریافت پروژه و یا فول-استک شدن هستی.
۱۰ دیدگاه
ما همه سوالات و دیدگاه‌ها رو می‌خونیم و پاسخ میدیم
shahabshahidi ۱۱ بهمن ۱۴۰۲، ۱۸:۳۴

سلام وقت بخیر لطفا در مورد تفاوت mongoose و mongodb یه راهنمایی بکنید؟ اینکه این دو ماژول چه فرقی با هم دارند

نازنین کریمی مقدم ۱۵ بهمن ۱۴۰۲، ۰۶:۰۲

درود MongoDB یک پایگاه داده و Mongoose یک کتابخانه معروف Node.js برای استفاده از MongoDB هست.

حسین ۳۱ شهریور ۱۴۰۲، ۰۹:۴۷

سلام وقت بخیر. در فایل mongorc.js یک تیکه کد جاوا اسکریپت نوشتم که میخوام در محیط shell mongo در ترمینال لینوکس قبل < یا prompt اسم دیتابیسم رو بنویسه. یعنی در shell mongo نوشتم : use db اسم دیتابیسم قبل علامت prompt بیاد. این کد من در فایل mongorc.js هست : prompt = function(){ return db + '> '; }

نازنین کریمی مقدم ۳۰ مهر ۱۴۰۲، ۰۷:۰۳

درود متوجه سوالتون نشدم متاسفانه!

۲۰ بهمن ۱۴۰۰، ۱۱:۲۶

سلام چطوری میشه به دیتابیس مانگو دیبی که روی سرور وی پی اس ایجاد شده متصل شد ؟ شما الان از local host استفاده کردین اما خب این کار عملا بی فایده است ! دیتابیسی که روی سیستم خودم ایجاد کنم به دردی نمیخوره چطور میتونم به دیتابیسی که روی وی پی اس ایجاد شده متصل شد ؟ همه ی انجمن‌های برنامه نویسی از جمله استک اورفلو و کورا رو زیر و رو کردم اما نتونستم به نتیجه برسم

نازنین کریمی مقدم ۲۳ بهمن ۱۴۰۰، ۰۵:۵۱

درود <a href="https://www.digitalocean.com/community/tutorials/how-to-connect-node-js-to-a-mongodb-database-on-a-vps" target="_blank" rel="noopener nofollow ugc">این لینک</a> و <a href="https://ianlondon.github.io/blog/mongodb-auth/" target="_blank" rel="noopener nofollow ugc">این لینک </a>رو ببینید ایشالا مشکلتون رفع میشه.

حمید ۰۶ مهر ۱۳۹۹، ۱۸:۴۹

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

نازنین کریمی مقدم ۰۸ مهر ۱۳۹۹، ۰۱:۳۹

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

علی ۲۱ فروردین ۱۳۹۹، ۰۸:۴۹

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

فاطمه افشار ۳۱ فروردین ۱۳۹۹، ۱۱:۰۸

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

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