این آموزش جامع به همراه مثالها، نحوه نصب MongoDB روی سرور اوبونتو ۲۰.۰۴ را در هفت مرحله به شما نشان میدهد.
مونگو دی بی چیست؟ #
MongoDB یک پایگاه داده NoSQL متن باز و چندسکویی مبتنی بر سند است که در ساخت برنامههای سریع و مقیاسپذیر که حجم عظیمی از دادهها را مدیریت میکنند، محبوب است. برخلاف پایگاههای داده رابطهای سنتی که دادهها در جداول ذخیره میشوند، MongoDB از فرمت JSON برای ذخیره دادهها در اسناد استفاده میکند. در فرمت JSON، دادهها در جفتهای کلید-مقدار قالببندی میشوند که در آن نامها و مقادیر فیلدها با یک دونقطه از هم جدا شده و در داخل آکولاد قرار میگیرند.
با توجه به طرحواره انعطافپذیر آن، MongoDB یک انتخاب طبیعی برای توسعهدهندگانی است که نیاز به ساخت برنامههای سریع و بسیار مقیاسپذیر دارند که بتوانند حجم بالایی از دادهها را پردازش کنند.
جدیدترین نسخه MongoDB نسخه ۵.۰ است که در ۱۳ جولای ۲۰۲۱ منتشر شد و با ویژگیها و بهبودهای جدیدی عرضه میشود که شامل موارد زیر است:
- رمزگذاری سمت کلاینت چند ابری.
- اشتراکگذاری مجدد زنده پایگاههای داده.
- پلتفرم سری زمانی بومی با توابع ویندوز و نمایهسازی خوشهای.
- یک API پایدار که ارتقاء به آخرین نسخه را بدون تأثیر بر کدبیس شما آسان میکند.
- راهکار جستجوی متن کامل Atlas Search.
و خیلی چیزهای دیگر. میتوانید با مراجعه به یادداشتهای انتشار MongoDB 5.0 ، لیست جامعی از ویژگیها و اصلاحات اضافی در آخرین نسخه MongoDB را پیدا کنید .
در این راهنما، ما بر نصب نسخه اجتماعی MongoDB در اوبونتو ۲۰.۰۴ تمرکز خواهیم کرد.
۷ مرحله برای نصب MongoDB در اوبونتو ۲۰.۰۴ #
بیایید با مثالهایی از فرآیند نصب MongoDB در اوبونتو، به جزئیات مراحل بپردازیم.
مرحله ۱: نصب MongoDB #
اولین قدم نصب بستههای پیش نیاز مورد نیاز در طول نصب است. برای انجام این کار، دستور زیر را اجرا کنید.
sudo apt install -y software-properties-common gnupg apt-transport-https ca-certificates
مخازن رسمی اوبونتو بسته MongoDB را ارائه میدهند که میتوان آن را با یک دستور و با استفاده از مدیر بسته APT به شرح زیر نصب کرد:
sudo apt install -y mongodb
با این حال، نسخه MongoDB ارائه شده توسط مخازن، آخرین نسخه نیست. در زمان انتشار این راهنما، نسخه ارائه شده توسط مخازن اوبونتو نسخه ۳.۶.۸ است. در همین حال، آخرین نسخه پایدار ارائه شده توسط MongoDB، نسخه ۵.۰ است.
برای نصب جدیدترین بسته MongoDB، باید مخزن بسته MongoDB را به فایل فهرست منابع خود در اوبونتو اضافه کنید.
اما ابتدا باید کلید عمومی MongoDB را با استفاده از دستور wget به صورت زیر در سیستم خود وارد کنید:
wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -
این دستور خروجی زیر را تولید میکند که نشان میدهد کلید عمومی اضافه شده است.
خروجی:
OK
در مرحله بعد، مخزن APT مربوط به MongoDB را به /etc/apt/sources.list.dدایرکتوری اضافه کنید.
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
این دستور mongodb-org-5.0.listفایل را به /etc/apt/sources.list.d/دایرکتوری اضافه میکند. این فایل شامل خط زیر است:
deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse
پس از اضافه شدن مخزن، اندیس بسته محلی را مجدداً بارگذاری کنید.
sudo apt update
این دستور مخازن محلی را بهروزرسانی میکند و اوبونتو را از مخزن جدید MongoDB مطلع میسازد.
وقتی این مشکل برطرف شد، mongodb-orgبستهی متای ارائهدهندهی MongoDB را نصب کنید.
sudo apt install -y mongodb-org
پس از اتمام نصب، میتوانید نسخه MongoDB نصب شده را مطابق شکل زیر تأیید کنید:
mongod --version
این دستور خروجیهایی در مورد MongoDB از جمله نسخه و نسخه Git و سایر جزئیات را نمایش میدهد.
مرحله ۲: سرویس MongoDB را شروع و فعال کنید #
به طور پیشفرض، سرویس MongoDB هنگام نصب غیرفعال است. میتوانید با اجرای دستور زیر این موضوع را تأیید کنید:
sudo systemctl status mongod
برای شروع سرویس MongoDB، دستور زیر را اجرا کنید:
sudo systemctl start mongod
یک بار دیگر، تأیید کنید که آیا سرویس در حال اجرا است:
sudo systemctl status mongod
از خروجی بالا، میتوانید ببینید که MongoDB فعال و در حال اجرا است. علاوه بر این، میتوانید با شروع اتصال به سرور پایگاه داده و اجرای یک دستور تشخیصی، از فعال و در حال اجرا بودن پایگاه داده اطمینان حاصل کنید.
دستور نشان داده شده به پایگاه داده متصل میشود و نسخه فعلی MongoDB، آدرس سرور و پورتی که به آن گوش میدهد را نمایش میدهد.
mongo --eval 'db.runCommand({ connectionStatus: 1 })'
علاوه بر این، مقدار connectionStatusدستور داخلی MongoDB را برمیگرداند:
مقدار ۱ برای پارامتر «ok» نشان میدهد که سرور پایگاه داده طبق انتظار در حال اجرا است. در خط دوم، میتوانید URL سرور را ببینید که آدرس میزبان محلی (۱۲۷.۰.۰.۱) و پورت پیشفرض (۲۷۰۱۷) است که MongoDB روی آن گوش میدهد.
همچنین میتوانید پورت پیشفرض را به صورت زیر بررسی کنید
sudo ss -pnltu | grep 27017
پس از تأیید اجرای سرویس مطابق انتظار، اکنون میتوانید MongoDB را فعال کنید تا در هنگام بوت شدن سیستم، مطابق شکل، شروع به کار کند.
sudo systemctl enable mongod
تا اینجا، MongoDB با موفقیت نصب و پیکربندی شده است تا هنگام بوت شدن سیستم شروع به کار کند.
مرحله ۳: ایجاد یک پایگاه داده و یک کاربر در MongoDB #
تا این مرحله، نمونه MongoDB شما باید در حال اجرا و پیکربندی برای دسترسی از راه دور باشد. اکنون بیایید دنده عوض کنیم و نحوه ایجاد یک پایگاه داده و یک کاربر در MongoDB را بررسی کنیم.
برای دسترسی به MongoDB، دستور زیر را اجرا کنید:
mongosh
قبل از اینکه به پوسته MongoDB بروید، اطلاعاتی در مورد MongoDB مانند نسخه MongoDB و پوسته MongoDB و همچنین URL مربوط به مستندات Mongosh را مشاهده خواهید کرد.
درست بالای اعلان پوسته Mongo، هشداری نیز مشاهده خواهید کرد که نشان میدهد کنترل دسترسی برای پایگاه داده فعال نشده است و دسترسی خواندن و نوشتن به دادهها و پیکربندی محدود شده است. این هشدار نمایش داده میشود زیرا احراز هویت هنوز فعال نشده است. بنابراین نگران نباشید، این هشدار پس از فعال شدن احراز هویت در پایگاه داده ناپدید میشود.
به طور پیشفرض، سه پایگاه داده وجود دارد که هنگام نصب ایجاد میشوند. اینها admin، config، و هستند local. `برای فهرست کردن پایگاههای داده موجود، دستور زیر را اجرا کنید:
> show dbs
برای ایجاد یک پایگاه داده، useدستور زیر را به همراه نام پایگاه داده اجرا کنید. به عنوان مثال، برای ایجاد یک پایگاه داده به نام، employeesدستور زیر را اجرا کنید:
> use employees
برای تأیید پایگاه دادهای که در حال حاضر میتوانید در آن قرار دهید، دستور را اجرا کنید . در این حالت، خروجی زیر را dbدریافت خواهید کرد:employees
> db
MongoDB تعدادی متد shell برای مدیریت پایگاه داده شما ارائه میدهد. این db.createUserمتد به شما امکان میدهد یک کاربر جدید در پایگاه داده ایجاد کنید.
این روش از شما میخواهد که نام کاربری و رمز عبور کاربر و هر نقشی که میخواهید به کاربر اعطا کنید را تعریف کنید. این اطلاعات در قالب JSON ارائه میشوند.
در اینجا نحوه ایجاد یک کاربر novinhostبا نقشهای خواندن و نوشتن در employeesپایگاه داده آمده است.
db.createUser(
{
user: "novinhost",
pwd: "some_password",
roles: [ { role: "readWrite", db: "employees" } ]
}
)
شما میتوانید کاربران ایجاد شده را با استفاده از db.getUsers()روش نشان داده شده فهرست کنید.
db.getUsers();
روش دیگر، میتوانید دستور زیر را اجرا کنید:
> show users
خروجی:
[
{
_id: 'employees.novinhost',
userId: UUID("lcde5d41-fbba-4c94-806e-6a3c25709f02"),
user: 'novinhost',
db: 'employees',
roles: [ { role: 'readWrite', db: 'employees' } ],
mechanisms: [ 'SCRAM-SHA-1', 'SCRAM-SHA-256' ]
}
]
برای حذف کاربر، از db.dropUserروشی که نشان داده شده است استفاده کنید.
db.dropUser("novinhost", {w: "majority", wtimeout: 4000})
خروجی:
{ ok: 1 }
مرحله ۴: امنسازی MongoDB #
در MongoDB، احراز هویت به طور پیشفرض فعال نیست، به این معنی که هر کاربری که به سرور پایگاه داده دسترسی دارد میتواند دادهها را بدون هیچ مجوزی مشاهده، اضافه و حذف کند. این یک آسیبپذیری جدی است که میتواند باعث نقض جدی دادههای شما شود. با توجه به این موضوع، ما یک قدم جلوتر میرویم و نشان میدهیم که چگونه میتوانید MongoDB را ایمن کنید.
اولین قدم ایجاد یک کاربر ادمین است و برای انجام این کار، ابتدا به Mongo Shell دسترسی پیدا کنید.
mongosh
سپس، به adminپایگاه داده متصل شوید یا به آن سوئیچ کنید.
> use admin
در مرحله بعد، با وارد کردن این خطوط و زدن کلید ENTER روی صفحه کلید، کاربر پایگاه داده را ایجاد کنید.
db.createUser(
{
user: "AdminNovinHost",
pwd: passwordPrompt(),
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
}
)
بیایید این کد را تجزیه کنیم.
این user: "AdminNovinHost"خط یک کاربر مدیریتی به نام AdminNovinHost ایجاد میکند .
این pwd: passwordPrompt()روش از شما رمز عبور کاربر ادمین را میخواهد. این یک جایگزین امنتر برای pwd:فیلدی است که از شما میخواهد رمز عبور را به صورت متن ساده تایپ کنید.
این roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]خط، نقشهای اعطا شده به کاربر مدیریتی را مشخص میکند. در اینجا، به کاربر مدیریتی مجوزهای خواندن و نوشتن در adminپایگاه داده اعطا شده است. و از آنجایی که این نقش در پایگاه داده تعریف شده است admin، کاربر مدیریتی، در واقع، میتواند تمام پایگاههای داده موجود در خوشه را بخواند و تغییر دهد.
خروجی پس از اجرای دستور به صورت زیر است.
برای خروج از Mongo Shell، exitدستور را اجرا کنید یا را فشار دهید CTRL + C.
با قرار دادن کاربر Admin، مرحله بعدی فعال کردن احراز هویت است. برای انجام این کار، mongod.confفایل را باز کنید.
sudo nano /etc/mongod.conf
به پایین اسکرول کنید و security بخش مورد نظر را پیدا کنید. آن را از حالت کامنت خارج کنید و authorizationدستورالعمل را اضافه کنید و مقدار آن را قرار دهید enabled.
security:
authorization: enabled
توجه داشته باشید که پارامتر در حالی که در ابتدا فاصلهای ندارد، authorizationتورفتگی دارد .security
تغییرات را ذخیره کرده و از فایل پیکربندی خارج شوید. برای اعمال تغییرات، سرویس Mongo را مطابق شکل مجدداً راهاندازی کنید.
sudo systemctl restart mongod
همچنین، حتماً بررسی کنید که آیا سرویس مطابق انتظار در حال اجرا است یا خیر.
sudo systemctl status mongod
حالا وارد Mongo Shell شوید.
mongosh
این بار متوجه خواهید شد که هشدارها ناپدید شدهاند.
با این حال، اگر سعی کنید هر کار مرتبط با پایگاه داده مانند مشاهده پایگاههای داده را انجام دهید، خروجیای دریافت خواهید کرد که نشان میدهد احراز هویت لازم است.
> show dbs
برای ورود با احراز هویت، ابتدا با اجرای exitدستور از Mongo Shell خارج شوید. سپس با استفاده از کاربر ادمین و با استفاده از سینتکس زیر وارد شوید.
mongosh "mongodb://adminuser@mongo-ip-address:27017"
رمز عبور کاربر ادمین را وارد کنید، و این بار، تمام هشدارهای احراز هویت که قبلاً با آنها مواجه شده بودید، ناپدید خواهند شد.
از این مرحله به بعد، فقط کاربر ادمین (administrator) دسترسی مشاهده، ایجاد و تغییر دادهها در پایگاههای داده را خواهد داشت.
مرحله ۵: پیکربندی MongoDB برای دسترسی از راه دور #
به طور پیشفرض، دسترسی به MongoDB به صورت محلی روی همان سروری که روی آن نصب شده است، تنظیم شده است. برای فعال کردن دسترسی از راه دور، باید /etc/mongod.confفایلی را که فایل پیکربندی اصلی MongoDB است، ویرایش کنید.
این شامل تنظیماتی برای محل ذخیره پایگاه داده، ثبت وقایع، شبکه و مدیریت فرآیند است که به چند مورد اشاره میکنیم.
بنابراین، با استفاده از ویرایشگر متن خود به فایل پیکربندی دسترسی پیدا کنید.
sudo nano /etc/mongod.conf
بخش مورد نظر را پیدا کنید network interfacesو به مقدار آن توجه کنید bindIP.
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1
به طور پیشفرض، MongoDB به آدرس ۱۲۷.۰.۰.۱ که رابط loopback است، محدود شده است. این بدان معناست که MongoDB فقط قادر به پذیرش اتصالات از همان سروری است که در آن نصب شده است.
برای اجازه دسترسی از راه دور، یک کاما اضافه کنید و سپس آدرس IP سرور Mongo را به دنبال آن بنویسید.
bindIp: 127.0.0.1, mongo-server-ip
تغییرات را ذخیره کنید و از فایل پیکربندی خارج شوید. برای اعمال تغییرات ایجاد شده، سرویس MongoDB را مجدداً راه اندازی کنید.
sudo systemctl restart mongod
اگر UFW را فعال کردهاید، دستور زیر را اجرا کنید تا اتصالات ورودی از یک دستگاه راه دور مجاز شود.
sudo ufw allow from remote_machine_ip to any port 27017
برای اعمال تغییرات، فایروال را مجدداً بارگذاری کنید.
sudo ufw reload
مرحله ۶: دسترسی از راه دور به MongoDB #
چند راه برای دسترسی از راه دور به پوسته MongoDB وجود دارد. میتوانید از ابزار netcat برای شروع اتصال TCP به پورت ۲۷۰۱۷ استفاده کنید که پورت پیشفرضی است که MongoDB به آن گوش میدهد.
اگر netcat روی دستگاه کلاینت نصب نشده است، آن را به صورت زیر نصب کنید.
sudo apt install netcat
برای برقراری اتصال به سرور MongoDB از طریق پورت ۲۷۰۱۷، دستور زیر را اجرا کنید:
nc -zv mongodb_server_ip 27017
خروجی زیر نشان میدهد که اتصال با موفقیت انجام شده است.
خروجی:
Connection to mongodb_server_ip 27017 port [tcp/*] succeeded!
به عنوان یک روش جایگزین، میتوانید با استفاده از Mongo Shell به صورت زیر وارد سیستم شوید.
mongosh "mongodb://username@mongo_server_ip:27017"
پوسته به طور خودکار از شما رمز عبور کاربر ادمین را درخواست میکند.
💡 نکته حرفهای: هنگام استفاده از گزینه ورود به سیستم Mongo Shell، اطمینان حاصل کنید که نسخه Mongo shell روی کلاینت و سرور MongoDB از راه دور یکسان باشد.
مرحله ۷: کار با پایگاه داده MongoDB #
عملیات پایگاه دادهی نسبتاً زیادی وجود دارد که میتوانید در MongoDB انجام دهید. برای مثال، میتوانید رکوردهایی از یک پایگاه داده را createایجاد کنید retrieve.updatedelete
درج داده #
برای ایجاد یک سند در یک مجموعه، از .insertOne()متد استفاده کنید. این متد از چندین نوع داده مانند رشتهها، اعداد صحیح، مقادیر بولی و آرایهها پشتیبانی میکند.
در مرحله قبل، یک پایگاه داده آزمایشی به نام employees ایجاد کردیم . اکنون یک مجموعه ایجاد میکنیم و چند سند به آن اضافه میکنیم. یک مجموعه شامل یک یا چند سند است.
دستور زیر مجموعهای به نام staff ایجاد میکند و سندی را با برخی از دادههای کاربر، همانطور که نشان داده شده است، اضافه میکند.
db.staff.insertOne({ name: "Alice", age: 25, city: "London", married: true, hobbies: ["Travelling", "Swimming", "Cooking"] })
پس از اجرای موفقیتآمیز دستور، خروجی زیر را دریافت خواهید کرد.
خروجی:
{
acknowledged: true,
insertedId: ObjectId("62647ff866c1f054568a11b5")
}
بازیابی دادهها #
با سندی که از قبل در staffمجموعه ایجاد شده است، میتوانید آن را بازیابی کرده و نتایج را با استفاده از این .find()روش فیلتر کنید.
برای مثال، برای بازیابی تمام اسناد موجود در staffمجموعه، دستور زیر را اجرا کنید:
db.staff.find()
خروجی:
[
{
_id: ObjectId("62647ff866c1f054568a11b5"),
name: 'Alice',
age: 25,
city: 'London',
married: true,
hobbies: [ 'Travelling', 'Swimming', 'Cooking' ]
}
]
حالا بیایید یک کار بلندپروازانه انجام دهیم. چند سند دیگر اضافه میکنیم و چند پرسوجو روی مجموعه اجرا میکنیم.
db.staff.insertOne({ name: "Bob", age: 29, city: "Liverpool", married: false, hobbies: ["Hiking", "Watching movies", "Driving"] })
db.staff.insertOne({ name: "Winnie", age: 25, city: "Bristol", married: true, hobbies: ["Playing chess", "Surfing", "Painting"] })
برای پرس و جو از سوابق کارمندانی که متاهل هستند، دستور زیر را اجرا کنید:
db.staff.find({ married: true })
خروجی فقط سوابق کارمندان متاهل را ارائه میدهد.
خروجی:
[
{
_id: ObjectId("62647ff866c1f054568a11b5"),
name: 'Alice',
age: 25,
city: 'London',
married: true,
hobbies: [ 'Travelling', 'Swimming', 'Cooking' ]
},
{
_id: ObjectId("626483d6b490694bc675b767"),
name: 'Winnie',
age: 25,
city: 'Bristol',
married: true,
hobbies: [ 'Playing chess', 'Surfing', 'Painting' ]
}
]
بهروزرسانی دادهها #
برای بهروزرسانی یا تغییر رکوردها، از این .update()متد استفاده کنید. در این مثال، نشان میدهیم که چگونه میتوانید nameمقدار رکورد دوم را از Bob به Robert تغییر دهید .
db.staff.update({ name: "Bob" }, {$set: { name: "Robert" }})
خروجی نشان داده شده تأیید میکند که بهروزرسانی رکورد با موفقیت انجام شده است.
خروجی:
{
acknowledged: true,
insertedId: null,
matchedCount: 1,
modifiedCount: 1,
upsertedCount: 0
}
اکنون میتوانید به صورت زیر پرسوجو کنید تا ببینید آیا میتوانید رکوردی پیدا کنید که با نام Robert مطابقت داشته باشد یا خیر.
db.staff.find({ name: "Robert" })
خروجی:
[
{
_id: ObjectId("626483c8b490694bc675b766"),
name: 'Robert',
age: 29,
city: 'Liverpool',
married: false,
hobbies: [ 'Hiking', 'Watching movies', 'Driving' ]
}
]
حذف دادهها #
پوسته MongoDB دو روش برای حذف رکوردها ارائه میدهد:
.deleteOne()
.deleteMany()
این .deleteOne()روش برای حذف یک رکورد یا سند از یک مجموعه استفاده میشود.
این .deleteMany()متد چندین سند را از یک مجموعه حذف میکند.
بهترین راه برای حذف یک رکورد، استفاده از _idمقدار آن رکورد است. این یک مقدار منحصر به فرد است که به هر رکورد داده میشود و نسبت به تعریف ورودیهای تکی، همانطور که در زیر نشان داده شده است، ترجیح داده میشود، زیرا در این صورت هر رکوردی که نام را دارد، حذف میشود Robert.
db.staff.deleteOne({ name: "Robert"})
بنابراین، برای حذف ایمن رکورد Robert بدون تأثیر بر سایر رکوردهایی که مقدار نام یکسانی دارند، _idبه جای آن مقدار را مشخص کنید.
db.staff.deleteOne({ _id: ObjectId("626483c8b490694bc675b766")})
خروجی:
{ acknowledged: true, deletedCount: 1 }
علاوه بر این، میتوانید اسناد را بر اساس یک معیار خاص حذف کنید. در این حالت، از .deleteMany()روش حذف چندین رکورد استفاده کنید.
برای مثال، برای حذف تمام اسناد موجود در مجموعه کارکنان که کارمندان آن متاهل هستند، دستور زیر را اجرا کنید:
db.staff.deleteMany({married: true})
خروجی:
{ acknowledged: true, deletedCount: 1 }
برای حذف تمام اسناد موجود در مجموعه، از .deleteMany()متد بدون هیچ آرگومانی استفاده کنید:
db.staff.deleteMany({})
اگر سعی کنید از مجموعه پرس و جو کنید، متوجه خواهید شد که خروجی خالی خواهد بود، که نشان میدهد تمام اسناد حذف شدهاند و اکنون مجموعه خالی است.
نتیجهگیری #
MongoDB یک پایگاه داده NoSQL قدرتمند و انعطافپذیر است که محبوبیت آن رو به افزایش است. این یک پایگاه داده محبوب برای ساخت برنامههای کاربردی حیاتی است که حجم عظیمی از دادههای بدون ساختار را مدیریت میکنند.
در این راهنما، نحوه نصب و شروع به استفاده از MongoDB در اوبونتو ۲۰.۰۴ را آموختید. برای اطلاعات بیشتر، به مستندات رسمی MongoDB مراجعه کنید.

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