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

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

יסודות בתכנות

מבוא לאבטחת מידע: גוגל דורקינג

מאמר מבוא המספר בקצרה ובלשון קלה על גוגל דורקינג – טכניקה לביצוע האקינג גם ללא ידע טכני כלל.

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

גישת Least Privilege

גישה לכתיבת קוד מאובטח שכדאי מאד להכיר – במיוחד בעידן הבינה המלאכותית

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