קבל מושג על שאילתות ופעולות MongoDB בעזרת המדריך השימושי הזה.
MongoDB הוא אחד מבסיסי הנתונים הנחשקים והנערצים ביותר של NoSQL לפיתוח מקצועי. הגמישות, המדרגיות והיכולת להתמודד עם כמויות גדולות של נתונים הופכות אותו לבחירה מובילה עבור יישומים מודרניים. אם אתה רוצה לשלוט בשאילתות ובפעולות הרגילות של MongoDB, אתה במקום הנכון.
בין אם אתם מחפשים לאחזר ולתפעל נתונים ביעילות, ליישם מודלים חזקים של נתונים או לבנות רספונסיביות יישומים, רכישת הבנה עמוקה של שאילתות ופעולות MongoDB נפוצות ללא ספק תשפר את כישורים.
1. צור או החלף מסדי נתונים
יצירת מסד נתונים מקומית באמצעות ה- MongoDB Shell היא פשוטה, במיוחד אם הגדרת אשכול מרוחק. אתה יכול ליצור מסד נתונים חדש ב- MongoDB עם ה להשתמש פקודה:
use db_name
בעוד שהפקודה לעיל יוצרת מסד נתונים חדש, אתה יכול להשתמש בו כדי לעבור למסד נתונים קיים מבלי ליצור מסד נתונים חדש מאפס.
2. זרוק מסד נתונים
ראשית, עבור למסד הנתונים שברצונך להסיר באמצעות להשתמש פקודה כפי שנעשתה בעבר. לאחר מכן שחרר את מסד הנתונים באמצעות dropDatabase() פקודה:
use db_name
db.dropDatabase()
3. צור אוסף
כדי ליצור אוסף, עבור למסד הנתונים היעד. להשתמש ב createCollection() מילת מפתח ליצירת אוסף MongoDB חדש:
db.createCollection("collection_name")
החלף collection_name עם שם האוסף שבחרת.
4. הכנס מסמך לאוסף
בזמן שליחת נתונים לאוסף, ניתן להוסיף מסמך בודד או מערך של מסמכים.
כדי להוסיף מסמך בודד:
db.collection_name.insertOne({"Name":"Idowu", "Likes":"Chess"})
אתה יכול גם להשתמש בשיטה שלעיל כדי להכניס מערך של מסמכים עם מזהה אחד:
db.collection_name.insertOne([{"Name":"Idowu", "Likes":"Chess"}, {"Language": "Mongo", "is_admin": true}])
כדי להכניס מסמכים רבים בבת אחת, כאשר לכל אחד יש מזהים נפרדים, השתמש ב- הכנס רבים מילת מפתח:
db.collection_name.insertMany([{"Name":"Idowu", "Likes":"Chess"}, {"Name": "Paul", "Likes": "Wordle"}])
5. קבל את כל המסמכים מאוסף
אתה יכול לשאול את כל המסמכים מאוסף באמצעות ה למצוא() מילת מפתח:
db.collection_name.find()
האמור לעיל מחזיר את כל המסמכים בתוך האוסף שצוין:
אתה יכול גם להגביל את הנתונים המוחזרים למספר מסוים. לדוגמה, אתה יכול להשתמש בפקודה הבאה כדי לקבל רק את שני המסמכים הראשונים:
db.collection_name.find().limit(2)
6. סינון מסמכים באוסף
ישנן דרכים רבות לסנן מסמכים ב- MongoDB. קחו למשל את הנתונים הבאים:
אם מחפשים רק שדה ספציפי במסמך, השתמש ב- למצוא שיטה:
db.collection_name.find({"Likes":"Wordle"}, {"_id":0, "Name":1})
האמור לעיל מחזיר את כל המסמכים שבהם הערך של אוהב הוא Wordle. זה רק מוציא את השמות ומתעלם מזהה המסמך.
ניתן גם לסנן אוסף לפי גורם מספרי. נניח שאתה רוצה לקבל את השמות של כל המשתמשים מעל גיל 21, השתמש ב- $gt מַפעִיל:
db.collection_name.find({"Likes":"Chess", "Age":{"$gt":21}}, {"_id":0, "Name":1})
הפלט נראה כך:
נסה להחליף למצוא עם findOne לראות מה קורה. עם זאת, קיימות מילות מפתח רבות אחרות לסינון:
- $lt: כל הערכים נמוכים מהערך שצוין.
- $gte: ערכים שווים או גדולים מהערך שצוין.
- $lte: ערכים הנמוכים או שווים לערך המוגדר.
- $eq: מקבל את כל הערכים שווים לערך שצוין.
- $ne: כל הערכים אינם שווים לערך שצוין.
- $in: השתמש בזה בעת ביצוע שאילתות על סמך מערך. הוא מקבל את כל הערכים התואמים לכל אחד מהפריטים במערך. ה תשעה דולר מילת מפתח עושה את ההיפך.
7. מיין שאילתות
מיון עוזר לסדר את השאילתה בסדר מסוים. ניתן למיין בסדר יורד או עולה. זכור כי המיון דורש התייחסות מספרית.
לדוגמה, כדי למיין בסדר עולה:
db.collection_name.find({"Likes":"Chess"}).sort({"Age":1})
כדי למיין את השאילתה לעיל בסדר יורד, החלף את "1" ב-"-1".
db.collection_name.find({"Likes":"Chess"}).sort({"Age":-1})
8. עדכן מסמך
עדכוני MongoDB דורשים מאופרטורים אטומיים לציין כיצד ברצונך לבצע את העדכון. להלן רשימה של אופרטורים אטומיים נפוצים שאתה יכול להתאים עם שאילתת עדכון:
- $סט: הוסף שדה חדש או שנה שדה קיים.
- $דחיפה: הכנס פריט חדש למערך. חבר אותו ל- $כל אחד מפעיל להכנסת פריטים רבים בבת אחת.
- $משוך: הסר פריט ממערך. השתמש בו עם $in כדי להסיר פריטים רבים בבת אחת.
- $לא מוגדר: הסר שדה ממסמך.
כדי לעדכן מסמך ולהוסיף שדה חדש, לדוגמה:
db.collection_name.updateOne({"Name":"Sandy"}, {"$set":{"Name":"James", "email":"example@gmail.com"}})
האמור לעיל מעדכן את המסמך שצוין כפי שמוצג:
הסרת שדה האימייל היא פשוטה עם ה $לא מוגדר מַפעִיל:
db.collection_name.updateOne({"Name":"Sandy"}, {"$unset":{"email":"example@gmail.com"}})
שקול את הנתונים לדוגמה הבאים:
אתה יכול להכניס פריט לקיים פריטים שדה מערך באמצעות $דחיפה מַפעִיל:
db.collection_name.updateOne({"Name":"Pete"}, {"$push":{"items":"Plantain"}})
הנה הפלט:
להשתמש ב $כל אחד מפעיל להכנסת פריטים רבים בבת אחת:
db.collection_name.updateOne({"Name":"Pete"}, {"$push":{"items": {"$each":["Almond", "Melon"]}}})
הנה הפלט:
כאמור, ה $משוך האופרטור מסיר פריט ממערך:
db.collection_name.updateOne({"Name":"Pete"}, {"$pull":{"items":"Plantain"}})
הנתונים המעודכנים נראים כך:
כלול את $in מילת מפתח להסרת פריטים רבים במערך בבת אחת:
db.collection_name.updateOne({"Name":"Pete"}, {"$pull":{"items": {"$in":["Almond", "Melon"]} }})
9. מחק מסמך או שדה
ה מחקOne אוֹ מחק רבים מילת מפתח שולפת מסמך מאוסף. להשתמש מחקOne כדי להסיר מסמך המבוסס על שדה שצוין:
db.collection_name.deleteOne({"Name":"IDNoble"})
אם ברצונך למחוק מסמכים רבים עם מפתחות משותפים, השתמש מחק רבים במקום זאת. השאילתה למטה מוחקת את כל המסמכים המכילים שַׁחְמָט כמו שלהם אוהב.
db.collection.deleteMany({"Likes":"Chess"})
10. פעולת יצירת אינדקס
יצירת אינדקס משפרת את ביצועי השאילתות על ידי ייעול מספר המסמכים ש-MongoDB צריך לסרוק. לרוב עדיף ליצור אינדקס בשדות שאתה מבצע שאילתות בתדירות גבוהה יותר.
אינדקס MongoDB דומה לאופן שבו אתה השתמש באינדקסים כדי לייעל שאילתות SQL. לדוגמה, כדי ליצור אינדקס עולה ב- שֵׁם שדה:
db.collection.createIndex({"Name":1})
כדי לרשום את האינדקסים שלך:
db.collection.getIndexes()
האמור לעיל הוא רק הקדמה. ישנן מספר שיטות אחרות עבור יצירת אינדקס ב- MongoDB.
11. צבירה
צינור הצבירה, גרסה משופרת של MapReduce, מאפשר לך להריץ ולאחסן חישובים מורכבים מתוך MongoDB. בניגוד ל-MapReduce, שדורש כתיבת המפה והפונקציות הקטנה בנפרד פונקציות JavaScript, הצבירה פשוטה ומשתמשת רק בשיטות MongoDB מובנות.
קחו למשל את נתוני המכירות הבאים:
באמצעות הצבירה של MongoDB, אתה יכול לחשב ולאחסן את המספר הכולל של מוצרים שנמכרו עבור כל קטגוריה באופן הבא:
db.sales.aggregate([{$group:{"_id":"$Section", "totalSold":{$sum:"$Sold"}}}, {$project:{"_id":0, "totalSold":1, "Section":"$_id"}}])
השאילתה לעיל מחזירה את הדברים הבאים:
מאסטר שאילתות MongoDB
MongoDB מציעה שיטות שאילתות רבות, כולל תכונות לשיפור ביצועי השאילתות. ללא קשר לשפת התכנות שלך, מבני השאילתה לעיל הם בסיסיים לאינטראקציה עם מסד נתונים MongoDB.
עם זאת, ייתכנו אי התאמות בתחביר הבסיס. לדוגמה, בעוד שפות תכנות מסוימות כמו Python מזהות מקרי נחשים, אחרות, כולל JavaScript, משתמשות במארז הגמל. ודא שאתה חוקר מה עובד עבור הטכנולוגיה שבחרת.