PracticU

כתיבת שאילתות ל-MongoDB

בלי כתוביותעם כתוביות
PracticU › קורס NodeJS › כתיבת שאילתות ל-MongoDB
מילון מושגים:
שאילתה - בקשה למסד נתונים לשלוף, להוסיף, לעדכן או למחוק נתונים, לרוב בשפת SQL.
MongoDB - מסד נתונים מסוג NoSQL שמאחסן נתונים כמסמכים בפורמט דמוי JSON, בלי מבנה טבלאי קשיח.
Promise - אובייקט ב-JavaScript שמייצג תוצאה עתידית של פעולה אסינכרונית, שתושלם בהצלחה או תיכשל.
ראוט - הגדרה שמקשרת כתובת בקשה לקוד שמטפל בה באפליקציה. גם מסלול שדרכו עוברות חבילות ברשת.
קונטרולר - רכיב שמתווך בין הממשק לבין הלוגיקה והנתונים, מקבל בקשות ומחליט כיצד לטפל בהן (למשל בדפוס MVC).
GET - שיטת HTTP לבקשת מידע מהשרת בלי לשנות אותו. הפרמטרים מועברים בדרך כלל בכתובת.
API - ממשק תכנותי שמגדיר כיצד תוכנה אחת פונה לאחרת ומחליפה איתה נתונים ופעולות.
Postman - כלי לבדיקת API: שליחת בקשות HTTP לשרת ובחינת התגובות, נפוץ בפיתוח ובבדיקות.

כתיבת שאילתות ל-MongoDB
ב-MongoDB אין SQL. את תנאי השאילתה מציינים באובייקטים עם מאפיינים שמתחילים בסימן $, והשפה הזו נקראת MongoDB Query Language. ההרצאה בונה שאילתה לפי טווח מחירים.
איך זה עובד
1. פונקציה לפי טווח: getProductsByPriceRange מקבלת מחיר מינימום ומקסימום ומחזירה Promise, בתבנית הרגילה של find ו-toArray.
2. אובייקט ריק מחזיר הכול: find({}) מחזיר את כל המסמכים. אובייקט כמו {name: "chai"} מסנן לפי שם, ומספר שדות באותו אובייקט נבדקים יחד, כמו AND.
3. תנאי OR: משתמשים ב-$or עם מערך שמתאר את האפשרויות.
4. אופרטורי השוואה: $gt (גדול מ-), $gte (גדול או שווה), $lt, $lte, $eq, $ne, $in ו-$nin. רשימה מלאה אפשר למצוא בתיעוד של MongoDB.
5. שאילתת הטווח: { price: { $gte: minPrice, $lte: maxPrice } }, ו-MongoDB מחזיר רק מוצרים שעונים על התנאי.
6. route בקונטרולר: נתיב GET ב-/api/products/by-price-range/:minPrice/:maxPrice, כשהמחירים נקראים מ-request.params וממירים למספר עם +. אפשר גם להעביר אותם ב-body.
בדיקה
ב-Postman קריאה עם 10 ו-20 מחזירה מוצרים במחירים 10 עד 20, וקריאה עם 10 ו-10 מחזירה רק מוצרים במחיר 10.
עכשיו אפשר לכתוב שאילתות מותאמות ב-MongoDB, בלי SQL.
השיעור הבא בקורס: שליפת מוצר יחד עם הקטגוריה שלו - MongoDB Join

פרקי ההרצאה: כתיבת שאילתות ל-MongoDB

  1. 00:00

    היכרות עם MongoDB Query Language

  2. 00:45

    פונקציית Get Product By Price Range

  3. 01:44

    אופרטורים gt, gte, lt ו-lte

  4. 02:45

    האופרטורים eq, ne, in ו-or

  5. 03:40

    הוספת אילוץ מחיר ל-Find

  6. 04:32

    שימוש באופרטור or עם מערך

תמלול ההרצאה: כתיבת שאילתות ל-MongoDB

הטקסט המלא של הדקות הראשונות בהרצאה «כתיבת שאילתות ל-MongoDB» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:03

    כעת אנחנו רוצים לראות מה זאת אותה MongoDB query language במקום ה-structured query language כלומר במקום ה-SQL. אז הקונספט הוא ושאנחנו מציינים למונגו דיבי כל מיני פקודות על ידי פרופרטיב שמתחילים בדולר.

  2. 00:27

    אז איך אנחנו יכולים לעשות את זה? יש לנו בואו ניקח פונקציה ונגיד שאנחנו רוצים to get product by price range. נעשה אותה אסינק, כי היא מחזירה פרומיס, והיא תקבל מינימום פרייס, היא תקבל מקסימום פרייס, ואנחנו רוצים לעשות שאילתא שמחזירה את כל המוצרים בטווח.

  3. 00:55

    איך בדיוק השאילתא הזאת אמורה להיות בשפת sql? אז היה לנו סלקט, והיה לנו מה בעצם אנחנו רוצים לבחור, from, מאיזה טבלה אנחנו רוצים לבחור, ויש לנו פה מה התנאי לגבי הבחירה שלנו, לדוגמה שהפרייס ביטווין מין ומאקס, או שהיה לנו אפשרות שהפרייס גדול שווה למין פרייס וגם הפרייס קטן שווה למאקס פרייס.

  4. 01:28

    כל הדברים האלה זה דברים ששייכים לשפת sql. אין לנו כאן את שפת sql כי אנחנו ב-no sql database. אז מה שיש לנו זה כל מיני פקודות, לדוגמה פקודות שנקראות comparison query operation, והפקודות האלה מתחילות בדולר כל פקודה.

  5. 01:56

    לדוגמה, gt זה קיצור של greater than, בואו אולי נעשה כאן איזה סדרה. greater than, יש לנו את דולר gte, שזה greater than or equal יש לנו את lt שזה lower than יש לנו את דולר lte שזה lower than or equal גדול קטן או שווה ל יש לנו כאן את eq שזה איקוואל יש לנו כאן את דולר, או פה שכחתי דולר כמובן,

  6. 02:47

    דולר ne שזה not equal. נקודה נוספת שיש לנו זה דולר in שזה בדיוק ה-in שאנחנו מכירים משפת sql, גם בשפת sql יש in. יש לנו כאן n-in שזה not-in, יש לנו כאן or שזה ה-or משפת sql שאנחנו מכירים ויש עוד רבים אחרים.

  7. 03:15

    אז אם אנחנו נכנסים לדוקומנטציה כמובן של MongoDB אנחנו יכולים לראות את כל ה-comparison query operations שקיימים ועוד פקודות ששייכות ל-MongoDB query language.

  8. 03:27

    אז מה שנעשה זה ניגש פה למעלה וניקח את ה-promise שבוחר את כל המוצרים. נדביק אותו פה, איפה הפונקציה שלנו מתחבאת? הנה היא.

  9. 03:43

    אנחנו רוצים להוסיף פקודה מה-MongoDB query language שאומרת שאנחנו רוצים שהמחיר יהיה בין שני החבר'ה האלה. אז יש לנו פה את זה. כאשר שמנו אובייקט ריק ב-Find הוחזרו כל ה-Documents, כל המוצרים.

  10. 04:04

    עכשיו אנחנו רוצים לתת אילוץ. אם היינו אומרים name.chai אז הוא היה מביא רק מוצרים שנקראים chai. כנראה שיש אחד אבל לא חייב. אם היינו אומרים name chai price 10 אז הוא היה נותן לנו רק מוצרים שיש להם גם name שהוא chai וגם price 10. לא חייב להיות לי רק אחד כזה, כן?

  11. 04:28

    אם הייתי רוצה לבצע פקודת אור לדוגמה אז היינו צריכים להשתמש בדבר הזה. זה end ואור היה משהו קצת אחר. הוא היה אומר בואו ניקח דולר אור ובואו תנו לי פה מערך שבמערך תתארו מה אתם רוצים לדוגמה אני מחפש גם מוצרים שיש להם name וגם מוצרים שיש להם price ככה זה עובד בהקשר הזה אוקיי אז

לקורס המלא: קורס NodeJS אונליין בעברית

ההרצאה הקודמת: מחיקה של מוצר ב-MongoDB

ההרצאה הבאה: שליפת מוצר יחד עם הקטגוריה שלו - MongoDB Join

הרצאות קשורות מקורסים אחרים

  • מבוא ל-MongoDB
  • יצירת תת-שאילתות ב-SQL
  • יירוט שאילתות - Intercepting Queries
  • כתיבת Test Case

קורסים נוספים במסלול

  • קורס יסודות HTML - בניית אתר אינטרנט פשוט
  • קורס CSS 3 - בדגש על Flex & Grid
  • קורס Javascript כולל JQuery
  • קורס ג'אווה סקריפט מעשי - JavaScript
  • קורס TypeScript
  • קורס ריאקט - React