מדריך 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

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

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

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

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

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