یادگیری MongoDB در یک شات – راهنمای نهایی MongoDB

MongoDB یک پایگاه داده اسناد منبع باز NoSQL محبوب است. این داده ها را در اسناد JSON منعطف به جای جداول با طرحی ثابت مانند پایگاه های داده SQL ذخیره می کند. MongoDB ذخیره و پرس و جو حجم زیادی از داده های بدون ساختار یا نیمه ساختار یافته را آسان می کند.
چرا از MongoDB استفاده کنیم؟
برخی از مزایای کلیدی MongoDB:
طرحواره انعطاف پذیر – اسناد می توانند دارای مجموعه های مختلفی از فیلدها باشند که به شما امکان می دهد انواع مختلف داده ها را در یک مجموعه ذخیره کنید.
مقیاس پذیری – MongoDB به صورت افقی با استفاده از شاردینگ برای پشتیبانی از حجم بالایی از خواندن و نوشتن مقیاس می شود. (ادامه مطلب را اینجا بخوانید…)
کارایی – مدل ذخیرهسازی اسناد امکان جستجوی سریعتر را در مقایسه با پایگاههای داده رابطهای فراهم میکند. ایندکس ها و حافظه نهان باعث افزایش عملکرد بیشتر می شوند.
در دسترس بودن بالا – مجموعههای Replica Failover خودکار و افزونگی دادهها را فراهم میکنند.
پرس و جوهای غنی – از پرس و جوهای پویا در برابر اسناد با استفاده از زبان پرس و جو مبتنی بر سند پشتیبانی می کند.
می خواهد تمام مزایای MongoDB DBMS را بخواند، اینجا را بررسی کنید…
مفاهیم کلیدی
قبل از شروع استفاده از MongoDB، بیایید چند مفهوم کلیدی را درک کنیم:
سند – واحد اصلی داده در MongoDB. شبیه به یک ردیف در جدول RDBMS. اسناد در قالب JSON مانند (BSON) با جفت های فیلد-مقدار ذخیره می شوند.
{ "_id": "507f1f77bcf86cd799439011", "name": "Mohit Singh Chauhan", "age": 22 }
مجموعه – گروهی از اسناد، شبیه به جدول در RDBMS. یک پایگاه داده می تواند چندین مجموعه داشته باشد.
پایگاه داده – یک ظرف فیزیکی برای مجموعه ها. هر سرور MongoDB به طور معمول دارای چندین پایگاه داده است.
نصب MongoDB
من فکر می کنم شما می توانید آن را با خواندن اسناد نصب کنید. خیلی سرراست است. شما باید MongoDB Community Server و MongoDB Shell را نصب کنید
پیوندها را دنبال کنید: MongoDB Community Edition و MongoDB Shell،
متغیر PATH Env را برای ویندوز تنظیم کنید و افزونه MongoDB VS Code را نصب کنید.
انواع داده ها در MongoDB
MongoDB طیف گسترده ای از انواع داده ها را برای فیلدهای موجود در اسناد پشتیبانی می کند:
رشته – رشته رمزگذاری شده UTF-8 برای ذخیره متن.
{ name: "John Doe" }
عدد صحیح – برای مقادیر عددی استفاده می شود.
{ age: 25 }
بولی – مقادیر true/false را ذخیره می کند.
{ active: true }
دو برابر – مقدار ممیز شناور 64 بیتی برای اعشار.
{ price: 24.99 }
آرایه ها – لیست مقادیر را در یک کلید ذخیره می کند.
{ hobbies: ["football", "chess", "code"] }
اسناد جاسازی شده – اسناد را در سایر اسناد ذخیره می کند.
{ address: { street: "123 Main St", city: "New York" } }
شناسه های اشیاء – نوع داده ویژه ای که برای شناسه های اسناد استفاده می شود، شناسه ها تا زمانی که به صراحت تعریف نشده باشند، به طور خودکار تولید می شوند.
{ _id: ObjectId() }
تاریخ – تاریخ و زمان به عنوان میلی ثانیه از زمان یونیکس ذخیره می شود.
{ createdAt: new Date() }
خالی – نشان دهنده داده های گم شده یا ناشناخته است.
{ middleName: null }
MongoDB یک طراحی طرحواره انعطاف پذیر ارائه می دهد که به اسناد موجود در مجموعه اجازه می دهد مجموعه های مختلفی از فیلدها را داشته باشند.
درج اسناد
برای درج یک سند در مجموعه:
db.users.insertOne({
name: "John",
age: 30
})
برای درج چندین سند:
db.users.insertMany([
{name: "John", age: 30},
{name: "Jane", age: 27}
])
MongoDB به طور خودکار یک منحصر به فرد تولید می کند _id
فیلد در صورت عدم ارائه
استعلام اسناد
استفاده کنید find()
برای استعلام اسناد در یک مجموعه پشتیبانی می کند:
فیلترهای پرس و جو
برای برگرداندن تمام اسناد در یک مجموعه، یک شی فیلتر خالی را به آن ارسال کنید find()
:
db.users.find({}) // returns all documents
یک شی فیلتر پرس و جو را برای انتخاب اسناد منطبق مشخص کنید:
db.users.find({age: {$gt: 18}}) // age greater than 18
عملگرهای پرس و جو رایج:
مقایسه (
$eq
،$gt
،$lt
)منطقی (
$and
،$or
،$not
)ارزیابی (
$exists
،$type
)آرایه (
$in
،$nin
)
اطلاعات بیشتر در مورد عملگرهای پرس و جو را اینجا بخوانید…
فرافکنی
یک سند طرح ریزی را مشخص کنید تا فقط فیلدهای انتخابی را برگرداند:
_id به طور پیش فرض درست است، بنابراین باید صریحاً به mongosh بگویید که پروژه ندهد شناسه
db.users.find({}, {name: 1, email: 1}) // only return name and email
مرتب سازی
یک مشخص کننده مرتب سازی را به sort()
:
db.users.find({}).sort({age: -1}) // sort by age descending
db.users.find({}).sort({age: 1}) // sort by age ascending
محدود کردن
محدود کردن نتایج با limit()
:
db.users.find({}).limit(10) // only return 10 docs
صفحه بندی
از مکان نما برای پرش و محدود کردن استفاده کنید:
const cursor = db.users.find()
cursor.skip(10).limit(10) // skip 10, limit 10
قابلیت های پرس و جو بسیار بیشتری وجود دارد – بعداً پوشش داده می شود!
به روز رسانی اسناد
از اپراتورهای به روز رسانی مانند استفاده کنید $set
برای به روز رسانی اسناد:
db.users.update({name: "John"}, {$set: {age: 20}})
اپراتورهای رایج به روز رسانی:
$set
– مقدار یک فیلد را تنظیم می کند$inc
– ارزش را افزایش می دهد$min
/$max
– به روز رسانی اگر کمتر / بزرگتر از فعلی$push
/$pull
– از یک آرایه اضافه/حذف می کند$rename
– نام یک فیلد را تغییر می دهد
حذف اسناد
برای حذف اسناد، استفاده کنید deleteOne()
یا deleteMany()
:
db.users.deleteMany({status: "inactive"})
شاخص ها
هشدار موضوع پیشرفته
ایندکس ها به موتور پرس و جو MongoDB اجازه می دهند بدون نیاز به اسکن هر سند موجود در مجموعه، اسناد را بر اساس فیلدهای نمایه شده خود به سرعت پیدا و مرتب کند.
به عنوان مثال، اضافه کردن یک شاخص در name
فیلد امکان جستجوی سریع مانند:
db.users.find({name: "John"})
db.users.find({name: {$gt: "A"}})
db.users.find({}).sort({name: 1}) // sort by name ascending
بدون شاخص روشن name
، این جستجوها به اسکن مجموعه کامل نیاز دارند که می تواند 100 برابر یا کمتر در مجموعه های بزرگ کندتر باشد. شاخص ها تأثیر چشمگیری بر عملکرد می گذارند.
برای ایجاد یک شاخص:
db.users.createIndex({name: 1}) // Ascending index
ایندکس در پسزمینه ایجاد میشود و خواندن/نوشتن را مسدود نمیکند.
برخی از ملاحظات هنگام استفاده از شاخص ها:
ایندکس ها فضای دیسک و حافظه را مصرف می کنند تا داده های فهرست شده را به طور موثر ذخیره کنند.
افزودن ایندکسها، عملیات نوشتن مانند درجها و بهروزرسانیها را کند میکند، زیرا ایندکسها نیز باید بهروزرسانی شوند.
از نمایهها در فیلدهایی که مکرراً سؤال میشوند یا مرتب میشوند استفاده کنید. از نمایه سازی بیش از حد خودداری کنید.
انواع ایندکس مانند متن، geospatial قابلیت های پرس و جو اضافی را فراهم می کند.
نمایه های مرکب را می توان در چندین فیلد ایجاد کرد.
خلاصه، ایندکس ها امکان جستجوی سریع و مرتب سازی اسناد بر اساس فیلدهای نمایه شده را می دهند، اما سربار ذخیره سازی و عملکرد نوشتن را نیز تحت تأثیر قرار می دهند. از ایندکس ها به طور عاقلانه بر اساس الگوهای پرس و جو و منابع سیستم استفاده کنید.
اینجا بیشتر بخوانید>>>https://www.mongodb.com/docs/manual/indexes/
از اینجا به کجا بروم
اکنون باید درک کاملی از اصول MongoDB داشته باشید. برخی از مراحل بعدی توصیه شده برای ارتقای مهارت های MongoDB خود به سطح بعدی:
MongoDB را به صورت محلی نصب کنید و با درج، پرس و جو، به روز رسانی و حذف اسناد از طریق پوسته MongoDB بازی کنید. تجربه عملی کلید تسلط بر MongoDB است.
اسناد MongoDB در مورد تجمیع را بخوانید تا نحوه انجام تجزیه و تحلیل پیشرفته و پردازش داده روی مجموعه داده را بیاموزید.
بیاموزید که چگونه با استفاده از جاسازی و پیوند، روابط یک به یک، یک به چند و چند به چند بین اسناد را مدل کنید.
معماری MongoDB از جمله به اشتراک گذاری و تکرار را درک کنید. یک خوشه خرد شده ساده تنظیم کنید.
با MongoDB Atlas (پایگاه داده ابری MongoDB) شروع کنید تا به راحتی یک خوشه MongoDB مدیریت شده را روی ابر بچرخانید.
بیاموزید که چگونه با استفاده از درایورهای MongoDB برای زبان هایی مانند Node.js، Java، Python برنامه ها را توسعه دهید.
در هنگام کار با MongoDB بهترین روشها را برای مدلسازی داده، نمایهسازی و بهینهسازی عملکرد کاوش کنید.
انجمن Mongo همچنین منابع زیادی را برای پیشرفت بیشتر مهارت های شما فراهم می کند!
کد نویسی مبارک 💖