تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

نحوه import و export کردن پایگاه داده MongoDB در اوبونتو 24.04


۸ فروردین ۱۴۰۴

مقدمه

MongoDB یکی از محبوب‌ترین موتورهای پایگاه‌داده NoSQL است. قابل اعتماد بودن، مقیاس‌پذیر بودن، قدرتمند بودن و راحتی کار با آن از ویژگی‌های بارز این ابزار پایگاه داده می‌باشد. منظور از import و export کردن، عملیاتی است که در آن، داده‌ها به فرمت قابل خواندن توسط انسان تبدیل می‌شوند؛ به‌گونه‌ای که با سایر محصولات نرم افزاری سازگار باشند. در مقابل، عملیات بکاپ‌گیری و بازیابی، داده‌های باینری خاص MongoDB را ایجاد یا استفاده می‌کند که یکپارچگی داده‌های شما و همچنین ویژگی‌های خاص MongoDB آن را حفظ می‌کند. بنابراین، برای انتقال، معمولاً استفاده از نسخه پشتیبان و بازیابی ترجیح داده می‌شود، به شرطی که سیستم‌های مبدأ و مقصد سازگار باشند. در این مقاله، نحوه import و export کردن پایگاه داده MongoDB را به شما آموزش خواهیم داد. تا پایان با ما همراه باشید:)

توجه داشته باشید برای دنبال کردن این آموزش موارد زیر را نیاز خواهید داشت:

  • یک سرور مجازی اوبونتو 24.04 شامل یک کاربر غیر root با دسترسی sudo و یک فایروال. توصیه می‌شود مقاله نحوه راه‌اندازی اولیه سرور مجازی با اوبونتو Ubuntu را قبل از شروع آموزش مطالعه کنید.
  • یک MongoDB نصب و پیکربندی شده.
  • آشنایی با تفاوت بین داده‌های JSON و BSON در MongoDB.

در ادامه بخوانید:

  • مرحله اول: import کردن اطلاعات در MongoDB
  • مرحله دوم: export کردن اطلاعات از MongoDB
  • نتیجه گیری
  • سوالات متداول

مرحله اول: وارد کردن اطلاعات در MongoDB

در این آموزش جهت یادگیری نحوه وارد کردن اطلاعات در MongoDB، یک نمونه پایگاه داده MongoDB در مورد رستوران‌ها استفاده کرده‌ایم. این نمونه دیتابیس با فرمت .json می‌باشد و با استفاده از wget بصورت زیر قابل دانلود می‌باشد:

wget https://raw.githubusercontent.com/mongodb/docs-assets/primer-dataset/primer-dataset.json

بعد از اتمام دانلود، باید یک فایل به نام primer-dataset.json در دایرکتوری فعلی داشته باشید. حالا بیایید داده‌ها را از این فایل به یک پایگاه داده جدید به نام newdb و به کالکشنی به نام restaurants وارد کنیم.

برای این کار از دستور mongoimport استفاده کنید:

sudo mongoimport --db newdb --collection restaurants --file primer-dataset.json

خروجی نمونه به این شکل خواهد بود:

2020-11-11T19:37:55.607+0000	connected to: mongodb://localhost/
2020-11-11T19:37:57.841+0000	25359 document(s) imported successfully. 0 document(s) failed to import

همانطور که دستور بالا نشان می‌دهد، 25359 داکیومنت وارد شده است. از آنجا که پایگاه داده‌ای به نامnewdb نداشتیم، MongoDB آن را به صورت خودکار ایجاد کرد.

حالا باید import را تائید کنید. برای این کار به پایگاه دادهnewdb که تازه ایجاد کردید، متصل شوید:

mongosh newdb

اکنون شما به نمونه پایگاه داده newdb متصل شده‌اید. توجه داشته باشید که کاربر ترمینال شما باید تغییر کند که این نشان دهنده اتصال شما به پایگاه داده است.

تعداد داکیومنت‌های موجود در collection رستوران‌ها، را با دستور زیر بدست آورید:

db.restaurants.count()

خروجی، عدد 25359 را نشان می‌دهد که تعداد داکیومنت‌های وارد شده است. برای بررسی دقیق‌تر می‌توانید، اولین داکیومنت را از collection رستوران‌ها بصورت زیر مشاهده کنید:

db.restaurants.findOne()

خروجی به شکل زیر خواهد بود:

{
	"_id" : ObjectId("5fac3d937f12c471b3f26733"),
	"address" : {
		"building" : "1007",
		"coord" : [
			-73.856077,
			40.848447
		],
		"street" : "Morris Park Ave",
		"zipcode" : "10462"
	},
	"borough" : "Bronx",
	"cuisine" : "Bakery",
	"grades" : [
		{
			"date" : ISODate("2014-03-03T00:00:00Z"),
			"grade" : "A",
			"score" : 2
		},
...
	],
	"name" : "Morris Park Bake Shop",
	"restaurant_id" : "30075445"
}

همانطور که در خروجی می‌بینید قالب json از رمزگذاری UTF-8 استفاده می‌کند و فایل‌های import و export شده به آن، باید در آن فرمت رمزگذاری شوند. اگر فایل‌های json را به صورت دستی ویرایش می‌کنید، باید این مورد را در ذهن داشته باشید. در غیر این صورت، MongoDB به طور خودکار این مورد را مدیریت خواهد کرد.

برای خارج شدن از محیط MongoDB، دستور exit را در ترمینال تایپ کنید:

exit

برای تجربه‌ای سریع، مقیاس‌پذیر و امن در پایگاه داده‌های MongoDB، هاست ابری MongoDB لیارا را امتحان کنید.
✅ عملکرد پایدار ✅ شبکه خصوصی ✅منابع اختصاصی
خرید هاست ابری MongoDB

مرحله دوم: export کردن اطلاعات از MongoDB

همانطور که قبلاً اشاره کردیم، با export کردن اطلاعات MongoDB می‌توانید یک فایل متنی قابل خواندن را به همراه داده‌های خود بدست آورید. به طور پیش فرض، اطلاعات در قالب json از پایگاه داده استخراج می‌شوند؛ اما شما می‌توانید به فرمت csv (جدا شده با کاما) نیز export کنید.

برای استخراج اطلاعات از MongoDB، از دستور mongoexport استفاده کنید. این دستور به شما امکان می‌دهد، داده‌ها را با اطلاعات بسیار دقیق استخراج کنید تا بتوانید یک پایگاه داده، یک collection، یک field را تعیین کرده و حتی از یک کوئری برای استخراج آن استفاده نمایید.

یک مثال ساده mongoexport، استخراج collection رستوران‌ها از پایگاه داده newdbاست. این همان پایگاه داده‌ای است که قبلاً وارد MongoDB کرده‌ایم.

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

sudo mongoexport --db newdb -c restaurants --out newdbexport.json

در دستور بالا، از --db برای تعیین پایگاه داده، از -c برای collection و --out برای فایلی که داده‌ها در آن ذخیره می‌شوند، استفاده شده است.

خروجی یک دستور mongoexport موفق باید به شکل زیر باشد:

2020-11-11T19:39:57.595+0000	connected to: mongodb://localhost/
2020-11-11T19:39:58.619+0000	[###############.........]  newdb.restaurants  16000/25359  (63.1%)
2020-11-11T19:39:58.871+0000	[########################]  newdb.restaurants  25359/25359  (100.0%)
2020-11-11T19:39:58.871+0000	exported 25359 records

خروجی بالا نشان می‌دهد که 25359 داکیومنت import شده است (همان تعداد اسناد که در مرحله قبل دیدید).

در برخی موارد ممکن است لازم باشد، تنها بخشی از collection خود را export کنید. در این صورت، اگر بخواهید این اطلاعات را مستقیماً هنگام اتصال به MongoDB دریافت کنید، مجدداً باید به پایگاه داده متصل شوید:

mongosh newdb

سپس از کوئری زیر استفاده کنید:

db.restaurants.find( { "borough": "Bronx", "cuisine": "Chinese" } )

نتایج کوئری به شکل زیر خواهد بود:

Output2020-12-03T01:35:25.366+0000	connected to: mongodb://localhost/
2020-12-03T01:35:25.410+0000	exported 323 records

برای خارج شدن از محیط مربوط به MongoDB، مجدداً دستور exit را تایپ کنید:

exit

اگر می‌خواهید داده‌ها را از یک خط فرمان sudo به جای اتصال به پایگاه داده استخراج کنید، در دستور monoexport، با استفاده از گزینه -q کوئری خود را بصورت زیر وارد کنید:

sudo mongoexport --db newdb -c restaurants -q "{\"borough\": \"Bronx\", \"cuisine\": \"Chinese\"}" --out Bronx_Chinese_retaurants.json

توجه داشته باشید که کاراکتر و دیگر کاراکترهای خاص در کوئری باید به همراه کاراکتر بک اسلش (\) استفاده شوند تا در جستجو به خود آن کاراکترها تبدیل شوند.

چنانچه استخراج موفقیت آمیز باشد، نتیجه بصورت زیر نمایش داده خواهد شد:

Output
2020-11-11T19:49:21.727+0000	connected to: mongodb://localhost/
2020-11-11T19:49:21.765+0000	exported 323 records

موارد بالا نشان می‌دهد که 323 رکورد استخراج شده است و شما می‌توانید آن‌ها را در فایل Bronx_Chinese_retrors.json که قبلاً تعیین کرده‌ایم، پیدا کنید.

دقت کنید که برای اسکن داده‌ها می‌توانید، از دستور cat و less بصورت زیر استفاده کنید:

cat Bronx_Chinese_retaurants.json | less

برای مرور داده‌ها صفحه به صفحه، از SPACE استفاده کنید:

Outputdate":{"$date":"2015-01-14T00:00:00Z"},"grade":"Z","score":36}],"na{"_id":{"$oid":"5fc8402d141f5e54f9054f8d"},"address":{"building":"1236","coord":[-73.8893654,40.81376179999999],"street":"238 Spofford Ave","zipcode":"10474"},"borough":"Bronx","cuisine":"Chinese","grades":[{"date":{"$date":"2013-12-30T00:00:00Z"},"grade":"A","score":8},{"date":{"$date":"2013-01-08T00:00:00Z"},"grade":"A","score":10},{"date":{"$date":"2012-06-12T00:00:00Z"},"grade":"B","score":15}],

. . .

در آخر، برای خروج از دیتابیس MongoDB کلید q را فشار دهید تا خارج شوید.

با ثبت‌نام در لیارا، ۱۰۰ هزار تومان اعتبار هدیه بگیرید و از سرور مجازی رایگان با کیفیت بالا و امکانات عالی استفاده کنید!
پشتیبانی ۲۴ ساعته برای کاربران سرور مجازی رایگان!
خرید سرور مجازی رایگان

جمع‌بندی

در این آموزش از لیار شما را با اصول import و export داده‌ها به و از پایگاه‌داده MongoDB آشنا کردیم. برای بهبود عملکرد و امنیت پایگاه داده MongoDB خود، استفاده از هاست ابری MongoDB لیارا را پیشنهاد می‌کنیم. این سرویس ابری با قابلیت‌هایی مانند پشتیبانی از Replication، پشتیبان‌گیری خودکار و مقیاس‌پذیری بالا، تجربه‌ای راحت و مطمئن در مدیریت پایگاه داده‌ها برای کسب‌وکارهای مختلف فراهم می‌کند. با استفاده از این سرویس، می‌توانید از امنیت بالا، عملکرد سریع و مدیریت آسان پایگاه داده‌های خود بهره‌مند شوید.