با کمک این راهنمای مفید، مجموعه ای از پرس و جوها و عملیات MongoDB را دریافت کنید.
MongoDB یکی از محبوب ترین و تحسین برانگیزترین پایگاه داده های NoSQL برای توسعه حرفه ای است. انعطافپذیری، مقیاسپذیری و توانایی مدیریت حجم زیادی از دادهها، آن را به بهترین انتخاب برای کاربردهای مدرن تبدیل کرده است. اگر می خواهید بر پرس و جوها و عملیات منظم MongoDB مسلط شوید، در جای درستی هستید.
چه به دنبال بازیابی و دستکاری کارآمد دادهها، پیادهسازی مدلهای داده قوی، یا ایجاد برنامههای کاربردی پاسخگو باشید، کسب درک عمیق از پرس و جوها و عملیات MongoDB بدون شک مهارتهای شما را افزایش میدهد.
1. ایجاد یا تغییر پایگاه داده
ایجاد یک پایگاه داده به صورت محلی از طریق MongoDB Shell ساده است، به خصوص اگر یک خوشه راه دور راه اندازی کرده باشید. می توانید با دستور use یک پایگاه داده جدید در MongoDB ایجاد کنید:
use db_name
در حالی که دستور بالا یک پایگاه داده جدید ایجاد می کند، می توانید از آن برای تغییر به یک پایگاه داده موجود بدون ایجاد پایگاه داده جدید از ابتدا استفاده کنید.
2. پایگاه داده را رها کنید
ابتدا با استفاده از دستور use همانطور که قبلا انجام شد به پایگاه داده ای که می خواهید رها کنید تغییر دهید. سپس با استفاده از دستور dropDatabase() پایگاه داده را رها کنید:
use db_name
db.dropDatabase()
3. یک مجموعه ایجاد کنید
برای ایجاد یک مجموعه، به پایگاه داده هدف سوئیچ کنید. از کلمه کلیدی createCollection() برای ایجاد یک مجموعه MongoDB جدید استفاده کنید:
db.createCollection("collection_name")
مجموعه_name را با نام مجموعه انتخابی خود جایگزین کنید.
4. درج سند در یک مجموعه
هنگام ارسال داده ها به یک مجموعه، می توانید یک سند یا مجموعه ای از اسناد را وارد کنید.
برای درج یک سند واحد:
db.collection_name.insertOne({"Name":"Idowu", "Likes":"Chess"})
همچنین می توانید از روش فوق برای درج آرایه ای از اسناد با یک شناسه استفاده کنید:
db.collection_name.insertOne([{"Name":"Idowu", "Likes":"Chess"}, {"Language": "Mongo", "is_admin": true}])
برای درج چندین سند به طور همزمان، با داشتن شناسه جداگانه، از کلمه کلیدی insertMany استفاده کنید:
db.collection_name.insertMany([{"Name":"Idowu", "Likes":"Chess"}, {"Name": "Paul", "Likes": "Wordle"}])
5. تمام اسناد را از یک مجموعه دریافت کنید
شما می توانید تمام اسناد یک مجموعه را با استفاده از کلمه کلیدی find() پرس و جو کنید:
db.collection_name.find()
موارد فوق تمام اسناد داخل مجموعه مشخص شده را برمی گرداند:
همچنین می توانید داده های برگشتی را به یک عدد خاص محدود کنید. به عنوان مثال، می توانید از دستور زیر برای دریافت تنها دو سند اول استفاده کنید:
db.collection_name.find().limit(2)
6. اسناد را در یک مجموعه فیلتر کنید
راه های زیادی برای فیلتر کردن اسناد در MongoDB وجود دارد. به عنوان مثال داده های زیر را در نظر بگیرید:
اگر فقط یک فیلد خاص را در یک سند پرس و جو می کنید، از روش Find استفاده کنید:
db.collection_name.find({"Likes":"Wordle"}, {"_id":0, "Name":1})
در بالا تمام اسنادی که مقدار Likes در آنها Wordle است را برمی گرداند. فقط نام ها را خروجی می دهد و شناسه سند را نادیده می گیرد.
همچنین می توانید یک مجموعه را با یک فاکتور عددی فیلتر کنید. فرض کنید می خواهید نام همه کاربران بالای 21 سال را دریافت کنید، از عملگر $gt استفاده کنید:
db.collection_name.find({"Likes":"Chess", "Age":{"$gt":21}}, {"_id":0, "Name":1})
خروجی به این صورت است:
FindOne را جایگزین findOne کنید تا ببینید چه اتفاقی میافتد. با این حال، بسیاری از کلمات کلیدی فیلتر کننده دیگر وجود دارد:
- $lt: همه مقادیر کمتر از مقدار مشخص شده است.
- $gte: مقادیر مساوی یا بزرگتر از مقدار مشخص شده.
- $lte: مقادیری که کمتر یا مساوی با مقدار تعریف شده هستند.
- $eq: تمام مقادیر برابر با مقدار مشخص شده را دریافت می کند.
- $ne: همه مقادیر با مقدار مشخص شده برابر نیستند.
- $in: هنگام پرس و جو بر اساس آرایه از آن استفاده کنید. تمام مقادیر مطابق با هر یک از آیتم های آرایه را دریافت می کند. کلمه کلیدی $nin برعکس عمل می کند.
7. پرس و جوها را مرتب کنید
مرتب سازی کمک می کند تا پرس و جو را در یک ترتیب خاص مرتب کنید. می توانید به ترتیب نزولی یا صعودی مرتب کنید. به خاطر داشته باشید که مرتب سازی نیاز به یک مرجع عددی دارد.
به عنوان مثال، مرتب سازی به ترتیب صعودی:
db.collection_name.find({"Likes":"Chess"}).sort({"Age":1})
برای مرتب کردن پرس و جو فوق به ترتیب نزولی، “1” را با “-1” جایگزین کنید.
db.collection_name.find({"Likes":"Chess"}).sort({"Age":-1})
8. یک سند را به روز کنید
به روز رسانی MongoDB به اپراتورهای اتمی نیاز دارد تا نحوه انجام به روز رسانی را مشخص کنند. در اینجا لیستی از عملگرهای اتمی متداول استفاده می شود که می توانید آنها را با یک درخواست به روز رسانی جفت کنید:
- $set: یک فیلد جدید اضافه کنید یا یک فیلد موجود را تغییر دهید.
- push $: یک آیتم جدید را در یک آرایه وارد کنید. آن را با عملگر $ هر جفت کنید تا چندین مورد را همزمان وارد کنید.
- $pull: یک آیتم را از یک آرایه حذف کنید. از آن با $in استفاده کنید تا بسیاری از موارد را یکجا حذف کنید.
- $unset: یک فیلد را از یک سند حذف کنید.
برای به روز رسانی یک سند و افزودن یک فیلد جدید، به عنوان مثال:
db.collection_name.updateOne({"Name":"Sandy"}, {"$set":{"Name":"James", "email":"example@gmail.com"}})
در بالا سند مشخص شده را همانطور که نشان داده شده به روز می کند:
حذف فیلد ایمیل با اپراتور $unset ساده است:
db.collection_name.updateOne({"Name":"Sandy"}, {"$unset":{"email":"example@gmail.com"}})
داده های نمونه زیر را در نظر بگیرید:
با استفاده از عملگر $push میتوانید یک مورد را در فیلد آرایه آیتمهای موجود وارد کنید:
db.collection_name.updateOne({"Name":"Pete"}, {"$push":{"items":"Plantain"}})
این خروجی است:
از عملگر $each برای درج چندین مورد به طور همزمان استفاده کنید:
db.collection_name.updateOne({"Name":"Pete"}, {"$push":{"items": {"$each":["Almond", "Melon"]}}})
این خروجی است:
همانطور که گفته شد، عملگر $pull یک آیتم را از یک آرایه حذف می کند:
db.collection_name.updateOne({"Name":"Pete"}, {"$pull":{"items":"Plantain"}})
داده های به روز شده به نظر می رسد:
برای حذف یکباره بسیاری از موارد در یک آرایه، کلمه کلیدی $in را وارد کنید:
db.collection_name.updateOne({"Name":"Pete"}, {"$pull":{"items": {"$in":["Almond", "Melon"]} }})
9. یک سند یا یک فیلد را حذف کنید
کلیدواژه deleteOne یا deleteMany یک سند را از مجموعه حذف می کند. از deleteOne برای حذف یک سند بر اساس یک فیلد مشخص استفاده کنید:
db.collection_name.deleteOne({"Name":"IDNoble"})
اگر می خواهید بسیاری از اسناد را با کلیدهای مشترک حذف کنید، به جای آن از deleteMany استفاده کنید. درخواست زیر تمام اسناد حاوی شطرنج را به عنوان لایک حذف می کند.
db.collection.deleteMany({"Likes":"Chess"})
10. عملیات نمایه سازی
نمایه سازی با ساده کردن تعداد اسنادی که MongoDB برای اسکن نیاز دارد، عملکرد پرس و جو را بهبود می بخشد. اغلب بهتر است برای فیلدهایی که بیشتر درخواست میکنید، یک فهرست ایجاد کنید.
نمایه سازی MongoDB مشابه نحوه استفاده از ایندکس ها برای بهینه سازی پرس و جوهای SQL است. به عنوان مثال، برای ایجاد یک شاخص صعودی در فیلد Name:
db.collection.createIndex({"Name":1})
برای فهرست کردن فهرست های خود:
db.collection.getIndexes()
موارد فوق فقط یک مقدمه است. چندین روش دیگر برای ایجاد ایندکس در MongoDB وجود دارد.
11. تجمع
خط لوله تجمع، نسخه بهبود یافته MapReduce، به شما امکان می دهد محاسبات پیچیده را از داخل MongoDB اجرا و ذخیره کنید. برخلاف MapReduce، که نیاز به نوشتن نقشه و توابع کاهش در توابع جداگانه جاوا اسکریپت دارد، تجمیع ساده است و فقط از روشهای MongoDB داخلی استفاده میکند.
به عنوان مثال، داده های فروش زیر را در نظر بگیرید:
با استفاده از تجمیع MongoDB، می توانید تعداد کل محصولات فروخته شده برای هر دسته را به شرح زیر محاسبه و ذخیره کنید:
db.sales.aggregate([{$group:{"_id":"$Section", "totalSold":{$sum:"$Sold"}}}, {$project:{"_id":0, "totalSold":1, "Section":"$_id"}}])
کوئری بالا موارد زیر را برمی گرداند:
پرس و جوهای MongoDB استاد
MongoDB بسیاری از روشهای پرسوجو را ارائه میدهد، از جمله ویژگیهایی برای بهبود عملکرد پرسوجو. صرف نظر از زبان برنامه نویسی شما، ساختارهای پرس و جوی بالا برای تعامل با پایگاه داده MongoDB ابتدایی هستند.
اگرچه ممکن است برخی از اختلافات در نحو پایه وجود داشته باشد. به عنوان مثال، در حالی که برخی از زبان های برنامه نویسی مانند پایتون موارد مار را تشخیص می دهند، برخی دیگر از جمله جاوا اسکریپت از شتر استفاده می کنند. اطمینان حاصل کنید که در مورد آنچه برای فناوری انتخابی شما کار می کند تحقیق کرده اید.