במאמר הקודם למדנו על התקנת סביבת העבודה של MongoDB ואפילו הקלדנו פקודה ראשונה שמראה לנו את כל מסדי הנתונים. למדנו שבניגוד ל-MySQL אנו לא יוצרים את מסד הנתונים מראש אלא הוא נוצר ברגע שאנחנו מכניסים את ה-collection הראשון. מה זה collection? איך משתמשים בו? מה עשינו רע? כל זה במאמר הזה.
על מנת להשתמש במסד נתונים, אנו צריכים להשתמש בו – כן! בדיוק כמו ב-MySQL וגם הסינטקס. בואו ונכתוב:
use test
בניגוד ל-MySQL המעיק, פה לא צריך להשתמש ב';'. זו כבר סיבה מעולה לעבור ל-MongoDB, אבל במקרה הזה אני סתם ממורמר 🙂
MongoDB יכתוב לנו שעברנו ל-test, אבל אם נסתכל על רשימת מסדי הנתונים נוכל לראות ש
showdbs
לא יחזיר לנו את test. זה כי אנו צריכים ליצור collection! מה זה collection? זו המקבילה של MongoDB לטבלה. בעצם כל collection זה אוסף של נתונים. למשל users, pages וכך הלאה. כל אוסף כזה מייצג ישות כלשהי. כל collection מכיל אובייקטים מבוססי JSON שנקראים documents, כאשר כל אובייקט יכול להיות שונה לחלוטין. כך למשל test יכול להכיל שני documents שכל אחד מהם נראה שונה לחלוטין.
מבולבלים? הכי טוב זה עם דוגמה. בואו וניצור document אחד
my_first_document = { name : "ran" }
שימו לב שרק יצרתי document ועוד לא הכנסתי אותו לשום מקום. בדיוק כמו בכל שפת תכנות – יצרתי משתנה אבל לא עשיתי איתו כלום. document יכול להיות כל דבר וכל אובייקט, למשל:
my_children = { name : ["Omri","Kfir","Daniel","Michak"] }
ה-document הוא בעצם אובייקט JSON לכל דבר ואני יכול להתפרע בו כרצונו, אבל אנחנו ממהרים יותר מדי, קודם בואו וניצור את ה-collection, אחרי שיצרתי את ה-document והוא מרחף כרגע בחלל בלי לעשות כלום, בואו ונגרום לו לחיות באמצעות הכנסתו ל-collection. שמו של ה-collection בישראל יהיה testData. וככה זה הולך:
db.testData.insert(my_first_document)
הפידבק שנקבל הוא:
WriteResult({ "nInserted" : 1 })
בבת אחת נוצרו כאן כמה דברים – ראשית נוצר מסד נתונים! עם היצירה של ה-collection, נוצר מסד הנתונים test. אם נסתכל באמצעות הפקודה show dbs נוכל לראות אותו סוף כך סוף. בנוסף, נוצר כאן collection בשם testData, על מנת להציג את כל ה-collections שיש לנו במסד הנתונים שאנו משתמשים בו, אנו יכולים להשתמש בפקודה:
show collections
ואם נשתמש בה נוכל לראות את ה-collection המדהים שלנו!
בנוסף, יצרנו document. ראשית באופן ערטילאי ואז באופן ממשי באמצעות הפקודה
db.testData.insert(my_first_document)
היצירה הזו בעצם יצרה גם document וגם את כל השאר.
בגדול, אפשר לומר ש:
MySQL | MongoDB |
---|---|
db | db |
table | collection |
row | document |
זה לא ממש מקבילה מדויקת – כי למשל בניגוד ל-MySQL אנו יכולים להכניס כמה סוגי documents לתוך collection אחד ואין לנו סכמה קשוחה כדי לעבוד איתה – אבל על זה במאמר הבא.
במאמר הבא אנו נדבר על איך שולפים נתונים מ-MongoDB
7 תגובות
הסבר מדהים
תודה! 🙂
הי,
אני עובד עם mongoose בשילוב עם (express.js) ונתקלתי בתופעה משונה (לקח לי כמה שעות למצוא את זה)
יצרתי דרך הshell של mongoDb שנקרא mongo מבנה נתונים (collection) שקראתי לו
student ולא הצלחתי לשלוף נתונים מהתוכנה (mongoose)
רק אחרי הרבה אלימינציה ראיתי שה mongoose שינה את השם ללשון רבים כלומר students
רשום על זה כאן
http://stackoverflow.com/questions/7486528/mongoose-force-collection-name
וכאן
http://mongoosejs.com/docs/guide.html#collection
מודה שאף פעם לא נתקלתי בזה. אולי בגלל שתמיד השתמשתי בלשון רבים – המון תודה על המידע!
מדריך נהדר. עד כמה אתה ממליץ לעבור מmmysql לmongo? התחלתי לפתח בNODE אחרי כמה שנים ב-PHP ואני בשלבי התאהבות
תודה! אם אתה עובד על node ובונה אפליקציה מאפס, הייתי הולך על מונגו בלי בעיה 🙂
קודם כל תודה רבה על המדריך, מאוד עוזר 🙂
אם אני מבין נכון, אתה מסביר כאן לעבוד עם מונגו כשהמסד נתונים הינו מקומי – כלומר יושב על המחשב. האם ישנה אפשרות לעבוד עם מונגו כאשר המסד יהיה גלובלי – כלומר ישב על שרת מרוחק? במידה וכן, איך אני יודע במה לבחור?.
תודה