מדריך MongoDB: שליפת נתונים: המשך

המשך לימוד שליפת נתונים בסיסית ב-MongoDB

במאמר הקודם למדנו איך משתמשים במתודת find כדי לחפש ערכים מדויקים (למשל שם), לחפש שם "דומה" כמו LIKE ב-MySQL או לחפש ערך מספרי גדול מ:. אנחנו נמשיך לחקור את find. על מנת להתאמן בשאילתות יצרנו collection עם מאה documents באופן פשוט וקל.

אז אם במאמר הקודם חיפשתי לקוחות שהערך של ה-value שלהם הוא גדול מ-95, אתם בוודאי יכולים להניח שעל מנת לחפש לקוחות שהערך שלהם קטן מ-95 אני צריך להשתמש ב:


db.clients.find({value: {$lt:95}})

אם gt משמעו Greater Than אז lt משמעו Less Than.

שילוב של שני תנאים הוא קל ופשוט, למשל אם אני רוצה לחפש את כל הלקוחות שהערך שלהם הוא בין 5ל-10, אני חייב לשלב את שני התנאים. במקרה הזה זה יראה כך:


db.clients.find({value: {$lt:10,$gt:5}})

זה בנוגע לתא אחד, אבל אני יכול לשלב כמובן – נניח שאני רוצה גם לקוחות שהערך שלהם הוא בין 5 ל-10 וגם שהשם שלהם יהיה כולל את האות a למשל? בדיוק כפי שהאופרטור AND משמש אותנו ב-MySQL.


db.clients.find({name: /a/ ,value: {$lt:10,$gt:5}})

חשוב להבין שמדובר בתנאי AND. כלומר התוצאות כוללות אך ורק document שהערך שלהם הוא בין 5 ל-10 וגם כאלו שיש להם a בשם.

ואם אני רוצה OR? כלומר או document עם ערך שבין 5 ל-10 או כאלו שיש להם a בשם? במקרה הזה הסינטקט משתנה. אני מעביר באובייקט את התכונה or$. התכונה היא מערך שכל אבר במערך הזה הוא בעצם תנאי OR. ככה זה נראה:


db.clients.find({
    $or: [{
        value: {
            $lt: 10,
            $gt: 5
        }
    }, {
        name: /a/
    }]
})

אני יכול להעביר כמה תנאי OR שאני רוצה כמובן. כל תנאי הוא איבר במערך or$. אני יכול לשלב גם AND ו-or כמובן באופן הזה:


db.clients.find({
    x: {
        $lt: 24
    },
    $or: [{
        value: {
            $lt: 10,
            $gt: 5
        }
    }, {
        name: /a/
    }]
})

מה קורה פה? מההתחלה: ראשית db, שהוא מסד הנתונים שבו אני משתמש. שנית, שם ה-collection שלי שהוא clients. ועכשיו מתודת find שמקבל את אובייקט החיפוש שלי. האובייקט הוא בעצם תנאי רגיל שהוא – תביאו לי רק X מתחת ל-24 ומתוך כולם הם צריכים להיות בין 5 ל-10 או עם האות a בשם.

מבולבלים? לא נורא. במקרה הזה מדובר בשאילתה מאוד מסובכת וקצת תיאורטית. אתם יכולים להתנחם בזה שהחגיגה מתחילה כאשר אנו מדברים על אובייקטים יותר מורכבים, אבל דיה לצרה בשעתה. נכון לעכשיו אתם אמורים לדעת איך שולפים נתונים באמצעות find ואיך משתמשים בתנאי OR או AND. אם אתם צריכים הסברים ודוגמאות נוספות – שווה מאוד להציץ בדוקומנטציה הרלוונטית והבהירה מאוד של MongoDB.

זה הכל! במאמר הבא אנחנו נדבר על שליפות נתונים מתקדמות עם MongoDB: איך עושים sorting, projection ו-limit

פוסטים נוספים שכדאי לקרוא

DALL·E 2024-09-06 12.34.24 - A visually engaging post about Python and cryptographic problems. The image should feature a dark-themed background with a glowing, futuristic Python
פתרונות ומאמרים על פיתוח אינטרנט

בעיות במימוש של פונקציות קריפטוגרפיות בפייתון

היום (16 לספטמבר) ממש, אני מעביר הרצאה ב-PyconIL 2024 על בעיות קריפטוגרפיות באפליקציות פייתון. לצערי אי אפשר להכניס את כל הבעיות הקריפטוגרפיות להרצאה אחת או

פתרונות ומאמרים על פיתוח אינטרנט

המנעו מהעלאת source control לשרת פומבי

לא תאמינו כמה אתרים מעלים את ה-source control שלהם לשרת. ככה תמצאו אותם וגם הסבר למה זה רעיון רע.

מיקרו בקרים

חיבור מצלמה למיקרובקר

חיבור מצלמה למיקרו בקר ויצירה של מצלמת אבטחה מרחוק בעלות של 20 שקל.

פתרונות ומאמרים על פיתוח אינטרנט

יישום של nonce על מנת להגן מפני התקפות injection

בפוסט הקודם הסברתי על hash עם CSP על משאבי inline – שזה נחמד ומעולה אבל פחות ישים בעולם האמיתי שבו בדרך כלל התוכן ה-inline (בין

גלילה לראש העמוד