נסתכל על מבנה של רשומה, ונראה איך עובדים אם רשומות מקוננות.
מבנה של רשומה נראה כמו רשומת Json. בתוך הרשומה הזאת יכולות להיות לנו עוד רשומות כהגדרה של שדה.
נניח שלכל ספר אנחנו רוצים להחזיק רשומות של חוות דעת, נוכל להשתמש במבנה הבא כדי להגדיר אותן:
{
"title": "Harry Potter",
"author": "J. K. Rowling",
"pages": 540,
"genres": ["fantasy", "magic"],
"rating": 9,
"reviews": [
{"name": "Billy", "body": "Great book"},
{"name": "Betty", "body": "A must read"}
]
}
היתרון של הטמעת רשומה בתוך רשומה היא שקל יותר לקרוא את הנתונים. דרך נוספת לשמור את הנתונים היא ליצור אוסף של חוות דעת ולקשר כל חוות דעת ל-ID של ספר. במקרה כזה היינו צריכים לבצע 2 שאילתות כדי לקבל את פרטי הספר.
אם יש כמות גדולה של חוות דעת, זה יכול להעמיס על האובייקט שאנחנו קוראים. דרך לפתרון יכולה להיות יצירה של אוסף נפרד לחוות הדעת ועם זאת שמירה של חוות הדעת האחרונות בתוך רשומת הספר. רק במידה והמשתמש ירצה לקרוא את כל חוות הדעת, ניגש לאוסף של חוות הדעת לקרוא את הנתונים.
הוספת רשומה מקוננת
db.books.insertOne({title: "On your way",
author: "Brandon White", rating: 9, pages: 290,
genres: ["Business"], reviews: [{"name": "Billy", "body": "Great book"},
{"name": "Betty", "body": "Bad book"}]})
אפשר להוסיף גם מספר רשומות על ידי insertMany.