עבודה עם Documents

הוספת Documents ל-Collection

כדי ליצור רשומה חדשה (document) אנחנו צריכים להיות בתוך האוסף הנכון. את זה נעשה של ידי פנייה לשם ה-DB, נקודה ושם ה-collection.

db.collection_name

במקרה של הדוגמא שלנו זה יהיה db.books

עכשיו תהיה זמינה לנו הפונקציה inserOne שמכניסה document חדש ל-collection. בסוגריים נשלח את פרטי הרשומה. לא נכניס ID הוא יווצר לבד.

db.books.insertOne({title: "The Magic Ring", 
author: "Jack Olive", pages: 320, 
rating: 6, genres: ["fantasy", "magic"]})

אם נכניס רשומה ל-collection שלא קיים, ייווצר לנו collection חדש.

אפשר גם להכניס רשימה של רשומות עם הפונקציה insertMany.

db.books.insertMany([{details of the first document}, {details of the second document}])

קבלת Documents

קבלת כל המסמכים שבאוסף:

db.books.find()

השימוש ב-find יביא את 20 הרשומות הראשונות. הפקודה it תביא את ה-20 הבאים.

אנחנו יכולים להשתמש בפילטרים כדי לסנן את התוצאות שאנחנו מקבלים. את תנאי הסינון נשלח לפונקציה find.

db.books.find({author: "Jack Olive"})

// More than one condition
db.books.find({author: "Jack Olive", rating: 7})

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

db.books.find({author: "Jack Olive"}, {title: 1, author: 1})

// Get all the records without filter
db.books.find({}, {title: 1, author: 1})

מציאת רשומה אחת אפשר לבצע על ידי הפונקציה findOne.

db.books.findOne({_id: ObjectId("65aecec82cc740efc182dc9e")})

אם יש כמה רשומות שעונות על התנאי, נקבל את הרשומה הראשונה.

מיון רשומות

אחרי שמוצאים את הרשומות, אפשר להמשיך ולבצע פעולות.

// ספירת הרשמות של  תוצאת השאילתא
db.books.find().count()

// הגבלת מספר הרשמות שנקבל בתוצאה
db.books.find().limit(3)

כדי למיין רשומות נקרא לפונקציה sort ונשלח אליה את ת=השדה שאנחנו רוצים למיין לפיו. כמו כן נשלח 1 אם רוצים את התוצאה בסדר עולה ו-(1-) אם רוצים את התוצאה בסדר יורד.

db.books.find().sort({title: 1})

ביטול Document

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

db.books.deleteOne({_id: ObjectId('65afef382771642f5de2372a')})

אפשר לבטל גם יותר מרשומה אחת בפעם אחת.

db.books.deleteMany({author: "Jack Olive"})

עריכת רשומה

עריכת רשומות מתבצעת על ידי updateOne או updateMany.

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

// Updating 1 field
db.books.updateOne({_id: ObjectId('65afef382771642f5de2372a')}, {$set: {rating: 10}})

// Updating more than 1 field
db.books.updateOne({_id: ObjectId('65aecba52cc740efc182dc9c')}, {$set: {rating:10, pages: 400}})

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

db.books.updateMany({author: "Brandon White"}, {$set: {author: "Brandon Black"}})

אופרטורים לעדכון

הוספה או הורדה של ערך כלשהו לערך. במקרה בדוגמא יתווסף 2 לערך של ה-pages.

db.books.updateOne({_id: ObjectId('65afef382771642f5de2372a')}, {$inc: {pages: 2}})

db.books.updateOne({_id: ObjectId('65afef382771642f5de2372a')}, {$inc: {pages: -2}})

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

db.books.updateOne({_id: ObjectId('65aecec82cc740efc182dc9f')}, {$pull: {genres: "Children's Action"}})

להוספת ערך נשתמש בפונקציה push.

db.books.updateOne({_id: ObjectId('65aecec82cc740efc182dc9f')}, {$push: {genres: "Children's Action"}})

אפשר להוריד או להוסיף מספר ערכים יחד.

db.books.updateOne({_id: ObjectId('65aecec82cc740efc182dc9f')}, {$push: {genres: {$each: ["Children's Action", "fantasy"]}}})

ניווט במאמר

מאמרים אחרונים

Weekly Tutorial