MongoDB מיון תוצאות שאילתות

Mongodb Mywn Twz Wt S Yltwt



כמעט כל מערכות מסדי הנתונים נותנות עדיפות למיון נתונים לפני אחזורם, מה שמבדיל אותם משיטות אחסון נתונים אחרות. ל-MongoDB יש גם דרכים שונות לקבוע כיצד למיין את הנתונים. לרוב, אנו משתמשים בשיטת sort() כדי לקבוע את הרצף שבו המסמך מופיע. סדר הרצף מועבר כפרמטר לשיטת sort() . השדה האחד או יותר המרכיבים את שיטת sort() עוקבים אחריהם לעתים קרובות ערך '1' או '-1'. השיטה sort() הופכת שאילתה לקריאה יותר, מה שמשפר את ההבנה של אוסף שצוין.

כיצד MongoDB ממיין תוצאות שאילתות?

שיטת המיון לוקחת את השדה ואת הערך המשויך לו כפרמטר בודד. שיטת המיון מקבלת פרמטרים בפורמט JSON כמו {Field: Value}. ניתן להזין את השדות והערכים המרובים גם בשיטת sort() כדי לקבל את המסמכים הממוינים מהאוסף. שקול את המסמך הבא שבו הכנסנו מסמכים רבים אחרים למסד הנתונים שלנו. שמו של מסד הנתונים של MongoDB זה נקרא 'עובדים'. באוסף 'עובדים' יש את כל המידע של העובדים המוצג להלן.

db.Employees.insertMany([
{
'name': 'רוברט',
'DOB': '14-05-1993',
'מין זכר',
'אימייל': ' [מוגן באימייל] ',
'department': 'אבטחה',
'משכורת': 5000
},
{
'שם': 'קייל',
'DOB': '31-05-1999',
'מין נשי',
'אימייל': ' [מוגן באימייל] ',
'department': 'IT',
'משכורת': 6200
},
{
'name': 'מתיו',
'DOB': '26-04-1993',
'מין זכר',
'אימייל': ' [מוגן באימייל] ',
'department': 'חשבונות',
'משכורת': 3500
},
{
'name': 'קווין',
'DOB': '14-07-1991',
'מין זכר',
'אימייל': ' [מוגן באימייל] ',
'department': 'אבטחה',
'משכורת': 4500
},

{
'שם': 'ג'וליה',
'DOB': '09-12-2000',
'מין נשי',
'אימייל': ' [מוגן באימייל] ',
'department': 'IT',
'משכורת': 2500
}
])

האוסף 'עובד' מוכנס עם המסמכים שסופקו שאישורם מוצג בפלט הבא. אנו הולכים להשתמש במסמך האיסוף הזה להצגת הפונקציונליות של תוצאות שאילתת המיון.









דוגמה מס' 1: אוסף לא ממוין של MongoDB

כאשר שאילתת החיפוש מבוצעת בשיטת find() היא תמיד נותנת אוסף לא ממוין של מסמכים. זה יכול להיות ברור יותר עם תוצאות השאילתה המפורטות להלן.



>db.Employees.find({},{_id:0})

כאן, יש לנו שאילתה של אוסף 'Employee' עם שיטת find() . המתודה find() לוקחת את הפרמטר הריק יחד עם ה-'_id:0'. לתוצאה פשוטה יותר, מזהה המסמך מוסר באמצעות האופרטור '_id:0'. כברירת מחדל, אנו משיגים אוספים לא ממוינים כאשר השאילתה מתבצעת בשיטת find() . הפלט שאוחזר להלן הוא כל המסמכים הלא ממוינים באופן שיש לנו בזמן ההכנסה.





דוגמה מס' 2: MongoDB מיון תוצאות שאילתות בסדר עולה

האוסף הממוין ב-MongoDB מתקבל על ידי שימוש בשיטת sort() אותה יש למקם אחרי שיטת find(). השיטה sort() ב- MongoDB לוקחת את הפרמטר הנכלל בשם השדה ובסדר מיון המסמך. אנחנו צריכים להזין '1' כפרמטר בשדה מכיוון שאנו נשלוף את המסמכים בסדר עולה בדוגמה הספציפית הזו. הדברים הבאים בשאילתת המיון מביאים לסדר עולה.



>db.Employees.find().sort({name:1})

כאן, השתמשנו בשיטת sort() לאחר שאילתת החיפוש find. השיטה sort() משמשת כדי למיין את השדה 'שם' בסדר עולה כאשר הערך '1' ממוקם ליד השדה שצוין. שימו לב שאם שיטת sort() לא צוינה עם ערך פרמטרי כלשהו אז האוסף לא יסומן. הפלט משיטת sort() יתקבל בסדר ברירת המחדל. התוצאות של שדה sort() by name בסדר עולה מוצגות במעטפת MongoDB הבאה.

דוגמה מס' 3: MongoDB מיון תוצאות שאילתות בסדר יורד

כעת, אנו מציגים את תוצאות שאילתת המיון של MongoDB בסדר יורד. שאילתה מסוג זה זהה לדוגמא שלעיל אך בהבדל אחד. עבור סדר יורד, שיטת sort() לוקחת את הערך '-1' כנגד שם העמודה. תוצאות שאילתת המיון בסדר יורד ניתנות להלן.

>db.Employees.find({},{'email':1,_id:0}).sort({'email':-1})

כאן, שאילתת החיפוש מתחילה בשיטת find() אשר מוצאת את השדה 'email' ומחזירה רק את ערכי השדה 'email'. לאחר מכן, ציינו את שיטת sort() המשמשת למיון השדה 'email', והערך '-1' לצידו מציין שתוצאות המיון שיתקבלו יהיו בסדר יורד. תוצאות שאילתת המיון בסדר יורד מובאות לאחר ביצוען במעטפת MongoDB.

דוגמה מס' 4: MongoDB מיון תוצאות שאילתות עבור שדות מרובים

אנחנו יכולים למיין את השדות המרובים ב- MongoDB עם השיטה sort() . יש להצהיר על השדות שיש למיין בשיטת sort() . המיון מבוסס על סדר ההצהרה של השדות וסדר המיון נבחן משמאל לימין. השאילתה למיון השדות המרובים צריכה להיראות כך:

>db.Employees.find({},{_id:0}).sort({'name':1,'salary':1})

כאן, שיטת sort() מועברת עם השדות 'שם' ו'שכר' שיש למיין. השדה 'שם' מאוסף 'Employee' ממוין ראשון מכיוון שהוא שדה הארגומנט הראשון של השיטה sort() . לאחר מכן, השיטה sort() ממיינת את שדה הארגומנט השני 'שכר'. הסדר של שני השדות הוא '1' מה שמציין שהמיון יהיה בסדר עולה. הפלט עבור שדות מרובים של שאילתת מיון נוצר בסדר המיון שצוין להלן.

דוגמה מס' 5: MongoDB מיון תוצאות שאילתות עם שיטת מגבלה

יתרה מזאת, השיטה sort() יכולה לשלב גם עם השיטה limit() אשר נותנת את המספרים המוגבלים של המסמכים הממוינים לפי שאילתת חיפוש זו. שיטת limit() דורשת מספר שלם כפרמטר, המגביל את מספר המסמכים שיש לכלול בערכת הפלט. שאילתת החיפוש מוגדרת מתחת אשר תחילה ממיין את המסמך ולאחר מכן מספקת את מסמכי המגבלה שצוינו.

>db.Employees.find({},{_id:0}).sort({'department':1,'DOB':1}).limit(4).pretty()

כאן, יש לנו את שאילתת החיפוש שמתחילה את פעולת המיון עבור העמודה 'מחלקה' ולאחר מכן עבור העמודה 'DOB' בסדר עולה על ידי שימוש בשיטת sort() . לאחר השלמת המיון, שמנו לצידה את שיטת limit() לאחזור המסמך המוגבל. לשיטת limit() ניתן ערך מספרי '4' כלומר היא מציגה רק ארבעה מסמכים ממוינים לפלט כפי שמוצג במסך הבא:

דוגמה מס' 6: MongoDB מיון תוצאות שאילתות עם $sort Aggregation

בכל הדוגמאות לעיל, ביצענו את המיון באמצעות שיטת sort() של MongoDB. יש דרך אחרת למיון ב- MongoDB שמתבצעת באמצעות צבירת $sort. האופרטור $sort ממיין את כל מסמכי הקלט ולאחר מכן מחזיר את המסמכים הממוינים לצינור. האופרטור $sort מוחל על אוסף 'עובדים' למטה.

db.Employees.aggregate([ { $sort : { salary : 1, _id: -1 } } ])

כאן, קראנו את השיטה המצטברת שבתוכה נוכל להשתמש באופרטור '$sort'. לאחר מכן, יש לנו את ביטוי האופרטור $sort שממיין את העמודה 'שכר' בסדר עולה ואת העמודה 'id' בסדר יורד. צבירת $sort שהופעלה על השדה מניבה את התוצאות הבאות:

דוגמה מס' 6: MongoDB מיון תוצאות שאילתות עם שיטת דילוג

ניתן לשייך את שיטת sort() גם לשיטת skip() . למערך הנתונים שנוצר יכול להיות מספר מסוים של מסמכים שיתעלמו מהם באמצעות שיטת skip() . כמו שיטת limit(), גם שיטת skip() מקבלת את הערך המספרי המציין את מספר המסמכים שיש לדלג עליו. שילבנו את שיטת sort() עם שיטת skip() בשאילתת המיון.

>db.Employees.find({},{_id:0}).sort({'salary':1}).skip(4).pretty()

כאן, השתמשנו בשיטת skip() לצד שיטת sort() . כאשר שיטת sort() ממיינת את המסמכים אז היא מעבירה את פלט המיון לשיטת sort() . לאחר מכן, שיטת skip() הסירה את ארבעת המסמכים הממוינים הראשונים מהאוסף.

סיכום

המאמר עוסק בתוצאות שאילתת המיון ב- MongoDB. השתמשנו בשיטת sort() למטרה זו המארגנת את הרשומות ברצף מוגדר. השתמשנו גם בשיטת sort() למיון מרובה על פני מספר שדות. שיטת sort() מוצמדת לאחר מכן עם המתודות limit() ו-skip() למסמכים הממוינים באמצעות פעולות אלו בנוסף, סיפקנו את צבירת $sort עבור תוצאות שאילתת מיון ב-MongoDB.