תכנון בניית מסד עם Mongodb
-
אני מנסה לתכנן מסד עם mongodb.
בשני מילים מדובר באפליקצייה מרובת משתמשים ('יוזרים'), כשכל משתמש יכול להעלות פוסטים.
כמובן שאני רוצה להציג לכל משתמש את הפוסטים שהוא יצר.איך עושים את זה?
אפשרות 1 - בכל יצירת משתמש אני יוצר קולקשן כשהדוקמנט הראשון הוא הפרטים שלו (שם, סיסמא, אימייל וכו')
וכל פוסט הופך להיות דוקמנט נפרד.
המעלות של האפשרות הזו, זה הסדר יחסית.
החסרון הגדול הוא, לפי מה שנראה לי במונגו מסובך מאוד לעשות חיפוש על כמה קולקשנ'ס (לשם דוגמא, איך אוכל לשלוף את כל רשימת המשתמשים? ראיתי שיש דרכים אבל באופן רשמי מונגו לא בנוי לזה (ואולי אני טועה בפרט הזה?)).אפשרות 2 - לדחוף את כל האפליקציה לקולקשן אחד. בכל דוקומנט אכניס אובייקטים, אובייקט ראשון יהיה הפרטים, אובייקט שני והלאה יהיה הפוסטים שהוא יצר.
אולי יש אפשרויות נוספות? אולי אני בכלל טועה בכיוון? ייתכן מאוד. אני ממש מתחיל.
-
אני לא מכיר את מונגו בפרט ואת עולם הnoSql בכלל.
ואולי בגלל זה, אני לא מבין למה לא להיות ילד טוב של מסד נתונים רלציוני ולעשות שתי קולקשנים: משתמשים ופוסטים.
איך תקשר בין משתמש לפוסטים שלו? או ע"י תכונה של מזהה משתמש בפוסט שתדאג שתהיה אינדקס או ע"י "קשר" בין הקולקשנים. -
גם כאן מציעים כך:
https://stackoverflow.com/a/21418563/11523006אלא שלפי מה שחשבתי לפחות עד כעת במונגו אין באמת מושג של 'קשר' בין קולקשן לקולקשן.
הצורה היחידה שאני יכול אולי לקשר ביניהם, לדוגמא במקרה זה, לחפש משתמש עם ID פלוני, ולשלוף את כל הפוסטים שהשדה author מכיל את אותו ID.
אני טועה? -
@גמליאל
א. אפשר לעשות בדיוק מה שאמרת, לשלוף את הפוסטים המתאימים לפי ID.
https://docs.mongodb.com/manual/tutorial/model-referenced-one-to-many-relationships-between-documents/
ב. יש כיום מושג של קשר במונגו, אבל אתה צודק שהוא לא מומלץ למקרים קלאסיים.