
$, והשפה הזו נקראת MongoDB Query Language. ההרצאה בונה שאילתה לפי טווח מחירים.getProductsByPriceRange מקבלת מחיר מינימום ומקסימום ומחזירה Promise, בתבנית הרגילה של find ו-toArray.find({}) מחזיר את כל המסמכים. אובייקט כמו {name: "chai"} מסנן לפי שם, ומספר שדות באותו אובייקט נבדקים יחד, כמו AND.$or עם מערך שמתאר את האפשרויות.$gt (גדול מ-), $gte (גדול או שווה), $lt, $lte, $eq, $ne, $in ו-$nin. רשימה מלאה אפשר למצוא בתיעוד של MongoDB.{ price: { $gte: minPrice, $lte: maxPrice } }, ו-MongoDB מחזיר רק מוצרים שעונים על התנאי.GET ב-/api/products/by-price-range/:minPrice/:maxPrice, כשהמחירים נקראים מ-request.params וממירים למספר עם +. אפשר גם להעביר אותם ב-body.הטקסט המלא של הדקות הראשונות בהרצאה «כתיבת שאילתות ל-MongoDB» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
כעת אנחנו רוצים לראות מה זאת אותה MongoDB query language במקום ה-structured query language כלומר במקום ה-SQL. אז הקונספט הוא ושאנחנו מציינים למונגו דיבי כל מיני פקודות על ידי פרופרטיב שמתחילים בדולר.
אז איך אנחנו יכולים לעשות את זה? יש לנו בואו ניקח פונקציה ונגיד שאנחנו רוצים to get product by price range. נעשה אותה אסינק, כי היא מחזירה פרומיס, והיא תקבל מינימום פרייס, היא תקבל מקסימום פרייס, ואנחנו רוצים לעשות שאילתא שמחזירה את כל המוצרים בטווח.
איך בדיוק השאילתא הזאת אמורה להיות בשפת sql? אז היה לנו סלקט, והיה לנו מה בעצם אנחנו רוצים לבחור, from, מאיזה טבלה אנחנו רוצים לבחור, ויש לנו פה מה התנאי לגבי הבחירה שלנו, לדוגמה שהפרייס ביטווין מין ומאקס, או שהיה לנו אפשרות שהפרייס גדול שווה למין פרייס וגם הפרייס קטן שווה למאקס פרייס.
כל הדברים האלה זה דברים ששייכים לשפת sql. אין לנו כאן את שפת sql כי אנחנו ב-no sql database. אז מה שיש לנו זה כל מיני פקודות, לדוגמה פקודות שנקראות comparison query operation, והפקודות האלה מתחילות בדולר כל פקודה.
לדוגמה, gt זה קיצור של greater than, בואו אולי נעשה כאן איזה סדרה. greater than, יש לנו את דולר gte, שזה greater than or equal יש לנו את lt שזה lower than יש לנו את דולר lte שזה lower than or equal גדול קטן או שווה ל יש לנו כאן את eq שזה איקוואל יש לנו כאן את דולר, או פה שכחתי דולר כמובן,
דולר ne שזה not equal. נקודה נוספת שיש לנו זה דולר in שזה בדיוק ה-in שאנחנו מכירים משפת sql, גם בשפת sql יש in. יש לנו כאן n-in שזה not-in, יש לנו כאן or שזה ה-or משפת sql שאנחנו מכירים ויש עוד רבים אחרים.
אז אם אנחנו נכנסים לדוקומנטציה כמובן של MongoDB אנחנו יכולים לראות את כל ה-comparison query operations שקיימים ועוד פקודות ששייכות ל-MongoDB query language.
אז מה שנעשה זה ניגש פה למעלה וניקח את ה-promise שבוחר את כל המוצרים. נדביק אותו פה, איפה הפונקציה שלנו מתחבאת? הנה היא.
אנחנו רוצים להוסיף פקודה מה-MongoDB query language שאומרת שאנחנו רוצים שהמחיר יהיה בין שני החבר'ה האלה. אז יש לנו פה את זה. כאשר שמנו אובייקט ריק ב-Find הוחזרו כל ה-Documents, כל המוצרים.
עכשיו אנחנו רוצים לתת אילוץ. אם היינו אומרים name.chai אז הוא היה מביא רק מוצרים שנקראים chai. כנראה שיש אחד אבל לא חייב. אם היינו אומרים name chai price 10 אז הוא היה נותן לנו רק מוצרים שיש להם גם name שהוא chai וגם price 10. לא חייב להיות לי רק אחד כזה, כן?
אם הייתי רוצה לבצע פקודת אור לדוגמה אז היינו צריכים להשתמש בדבר הזה. זה end ואור היה משהו קצת אחר. הוא היה אומר בואו ניקח דולר אור ובואו תנו לי פה מערך שבמערך תתארו מה אתם רוצים לדוגמה אני מחפש גם מוצרים שיש להם name וגם מוצרים שיש להם price ככה זה עובד בהקשר הזה אוקיי אז