PracticU

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

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

שליפת מוצר יחד עם הקטגוריה שלו - MongoDB Join
ב-MongoDB הקשר בין מוצר לקטגוריה הוא קשר לוגי ולא פיזי כמו בבסיס נתונים רלציוני: לכל מוצר יש categoryId. בהרצאה מביאים את המוצרים וכל מוצר מגיע יחד עם אובייקט הקטגוריה שלו, כלומר סוג של join.
השלבים העיקריים
1. הצורך: הלקוח ירצה לראות את ה-categoryId וגם את שם הקטגוריה והתיאור שלה.
2. פונקציה חדשה: getProductsIncludingCategory, בשם ביחיד, כי לכל מוצר קטגוריה אחת. מתחילים מהקוד שמחזיר את כל המוצרים.
3. aggregate במקום find: מעבירים לו מערך של אובייקטים שמתארים את השלבים.
4. שלב $lookup: מגדירים from: "categories" (הטבלה השנייה), localField: "categoryId" (השדה במוצרים), foreignField: "_id" (השדה בקטגוריות) ו-as: "category" (שם האובייקט החדש).
5. route בקונטרולר: נתיב join/products-including-category, ובדיקה ב-Postman.
6. שלב $unwind: התוצאה הראשונית מכילה את הקטגוריה כמערך עם איבר אחד. הוספת { $unwind: "$category" } מפרקת את המערך והופכת אותו לאובייקט בודד.
שימו לב
- ה-aggregate מחליף את ה-find, ולכן עדיין צריך toArray בסוף.
- בלי $unwind הקטגוריה מגיעה כמערך, גם כשיש בו איבר אחד.
כעת אפשר להחזיר מוצרים עם הקטגוריה של כל אחד, וההרצאה הבאה עושה את ההפך.
השיעור הבא בקורס: שליפת קטגוריה עם כל המוצרים שלה - MongoDB Join

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

  1. 00:00

    Relationship לוגי לעומת פיזי

  2. 00:58

    הבאת מוצר יחד עם אובייקט הקטגוריה

  3. 01:51

    פונקציה ב-Business Logic ל-Join

  4. 02:44

    שימוש ב-aggregate במקום find

  5. 03:22

    אובייקט lookup ושדות local ו-foreign

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

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

  1. 00:03

    כאשר אנחנו בנינו דאטאבייס במונגו DB והאמת גם זה היה במיי SQL וכאשר אנחנו השתמשנו בנורפרינד אנחנו ראינו שיש לנו פה את הקונספט הזה של הריליישן שיפ שהוא קונספט לוגי במונגו DB יותר מאשר פיזי.

  2. 00:24

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

  3. 00:39

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

  4. 01:05

    אם אני מביא מוצרים אני רוצה לעשות סוג של join כזה ולכל מוצר להביא את הקטגוריה אני לא רוצה להחזיר את זה תמיד בהכרח ללקוח הלקוח לא מעניין אותו מהcategory ID של המוצר יכול להיות שכן אבל הוא בטח ירצה גם לראות דברים כמו השם של הקטגוריה והDescription זאת אומרת שבמוצרים אנחנו רוצים להביא את המוצר עם כל הפרמטרים

  5. 01:35

    שלו ובנוסף להביא גם את האובייקט של הקטגוריה שמתאים אליו, זה דבר ראשון. דבר שני, אם אנחנו מביאים את הקטגוריות, אולי אנחנו רוצים לכל קטגוריה להראות אילו מוצרים יש לה.

  6. 01:49

    אז זה בעצם שני דברים שונים שאנחנו יכולים לעשות, בואו נתחיל עם הדבר הראשון. אז אנחנו עושים את זה ב-Business Logic שלנו וב-Business Logic אנחנו רוצים לבנות Function, קט פרודקטס אינקלודינג קטגורי כי למוצר יש קטגוריה אחת והגדרה שיש לנו בדאטאבייס הסינק אין לנו מה לקבל לתוך הפונקציה ואנחנו רוצים לייצר כאן בדיוק את הפרומיס הזה בואו ניקח אותו מפה הוא מביא

  7. 02:25

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

  8. 03:01

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

  9. 03:22

    ב-query language יש לנו lookup. lookup זה אובייקט שמתאר מה בעצם אנחנו רוצים לבחור. אז אנחנו אומרים כזה דבר.

  10. 03:35

    אנחנו קולקשן שנקרא product. זה הקולקשן שהוא הנוכחי שלנו. אנחנו רוצים from collection שנקרא categories, לבחור לוקל פילד, הלוקל פילד שלנו זה קטגורי איי-די, כלומר לוקל פילד של פרודקטס והפורן פילד והפורן פילד שנמצא בתוך קטגוריז אנחנו רוצים שהוא יהיה underline איי-די ואנחנו רוצים לקרוא

  11. 04:20

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

  12. 04:47

    אם אני הולך לפורנקי, לטבלה השנייה שאני מתייחס אליה, שם זה נקרא underline ID, אני פשוט

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

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

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

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

  • מבוא ל-MongoDB
  • Qlik Join - חלק 1
  • וולידציה למספר מאפיינים יחד
  • התקפת NtlmRelayX יחד עם BloodHound.py - חלק 1

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

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