מדריך BSON של MongoDB

1. הקדמה

במדריך זה נבחן את BSON וכיצד אנו יכולים להשתמש בה כדי לקיים אינטראקציה עם MongoDB.

כעת, תיאור מעמיק של MongoDB וכל יכולותיה הוא מחוץ לתחום מאמר זה. עם זאת, זה יהיה שימושי להבין כמה מושגי מפתח.

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

לקבלת מבט מעמיק יותר, עיין במאמר המבוא של MongoDB.

2. מה זה BSON?

BSON מייצג JSON בינארי. זהו פרוטוקול לסידור בינארי של נתונים דמויי JSON.

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

BSON מספקת כמה יתרונות על פני שימוש ב- JSON רגיל:

  • קומפקטי: ברוב המקרים אחסון a מבנה BSON דורש פחות מקום מהמקביל ל- JSON
  • סוגי מידע: BSON מספקת סוגי נתונים נוספים לא נמצא ב- JSON רגיל, כגון תַאֲרִיך ו BinData

אחד היתרונות העיקריים של השימוש ב- BSON הוא שקל לחצות אותו. מסמכי BSON מכילים מטא-נתונים נוספים המאפשרים מניפולציה קלה בשדות המסמך, ללא צורך לקרוא את המסמך כולו.

3. מנהל התקן MongoDB

עכשיו שיש לנו הבנה בסיסית של BSON ו- MongoDB, בואו נסתכל על השימוש בהם יחד. אנו נתמקד בפעולות העיקריות בראשי התיבות CRUD (גלהגיב, רעיד, Update, דelete).

MongoDB מספקת מנהלי התקן לתוכנות עבור רוב שפות התכנות המודרניות. הנהגים בנויים על גבי ספריית BSONכלומר, נעבוד ישירות עם ה- API של BSON בעת בניית שאילתות. למידע נוסף, עיין במדריך שלנו לשפת שאילתות MongoDB.

בחלק זה נבחן שימוש במנהל ההתקן להתחברות לאשכול ושימוש ב- API של BSON לביצוע סוגים שונים של שאילתות. שים לב שמנהל ההתקן של MongoDB מספק מסננים בכיתה שיכולה לעזור לנו לכתוב קוד קומפקטי יותר. אולם עבור הדרכה זו אנו נתמקד אך ורק בשימוש ב- API של הליבה של BSON.

כחלופה לשימוש ישירות במנהל ההתקן של MongoDB וב- BSON, עיין במדריך Spring Data MongoDB שלנו.

3.1. מְקַשֵׁר

כדי להתחיל, אנו מוסיפים תחילה את מנהל ההתקן של MongoDB כתלות ביישום שלנו:

 org.mongodb mongodb-driver-sync 3.10.1 

לאחר מכן אנו יוצרים חיבור למסד נתונים ואוסף MongoDB:

MongoClient mongoClient = MongoClients.create (); מסד נתונים של MongoDatabase = mongoClient.getDatabase ("myDB"); MongoCollection collection = database.getCollection ("עובדים");

החלקים הנותרים יסתכלו על יצירת שאילתות באמצעות אוסף התייחסות.

3.2. לְהַכנִיס

נניח שיש לנו את ה- JSON הבא אותו אנו רוצים להוסיף כמסמך חדש ל- עובדים אוסף:

{"first_name": "Joe", "last_name": "Smith", "title": "Java Developer", "years_of_service": 3, "skills": ["java", "spring", "mongodb"], "manager": {"first_name": "Sally", "last_name": "Johanson"}}

דוגמה זו JSON מציג את סוגי הנתונים הנפוצים ביותר שנתקל בהם עם מסמכי MongoDB: טקסט, מספרי, מערכים ומסמכים מוטבעים.

כדי להוסיף זאת באמצעות BSON, נשתמש ב- MongoDB מסמך ממשק API:

עובד המסמך = מסמך חדש () .append ("first_name", "Joe") .append ("last_name", "Smith") .append ("title", "Java Developer") .append ("years_of_service", 3) .append ("skills", Arrays.asList ("java", "spring", "mongodb")) .append ("manager", מסמך חדש () .append ("first_name", "Sally") .append (" שם משפחה "," ג'והנסון ")); collection.insertOne (עובד); 

ה מסמך class הוא ה- API העיקרי המשמש ב- BSON. זה מרחיב את Java מַפָּה ממשק ומכיל מספר שיטות עמוסות יתר. זה מקל על העבודה עם סוגים מקוריים כמו גם אובייקטים נפוצים כגון מזהי אובייקטים, תאריכים ורשימות.

3.3. למצוא

כדי למצוא מסמך ב- MongoDB, אנו מספקים מסמך חיפוש המציין על אילו שדות לשאול. לדוגמא, כדי למצוא את כל המסמכים שיש להם שם משפחה של "סמית", נשתמש במסמך JSON הבא:

{"last_name": "Smith"}

כתוב ב- BSON זה יהיה:

שאילתת מסמך = מסמך חדש ("שם אחרון", "סמית"); תוצאות רשימה = ArrayList חדש (); collection.find (שאילתה) .into (תוצאות);

שאילתות "מצא" יכולות לקבל שדות מרובים והתנהגות ברירת המחדל היא להשתמש בהגיוני ו מפעיל לשלב ביניהם. המשמעות היא כי רק מסמכים התואמים את כל השדות יוחזרו.

כדי לעקוף את זה, MongoDB מספקת את אוֹ מפעיל שאילתה:

{"$ or": [{"first_name": "Joe"}, {"last_name": "Smith"}]}

זה ימצא את כל המסמכים שיש להם שם פרטי "ג'ו" או שם משפחה "סמית". כדי לכתוב זאת כ- BSON, נשתמש בקינון מסמך בדיוק כמו שאילתת ההוספה למעלה:

שאילתת מסמך = מסמך חדש ("$ או", Arrays.asList (מסמך חדש ("שם משפחה אחרון", "סמית"), מסמך חדש ("שם ראשון", "ג'ו"))); תוצאות רשימה = ArrayList חדש (); collection.find (שאילתה). אל (תוצאות);

3.4. עדכון

שאילתות עדכון שונות במקצת ב- MongoDB מכיוון שהן דורשות שני מסמכים:

  1. הקריטריונים לסינון הם כדי למצוא מסמך אחד או יותר
  2. מסמך עדכון המציין אילו שדות יש לשנות

לדוגמא, נניח שאנחנו רוצים להוסיף מיומנות "ביטחונית" לכל עובד שכבר בעל מיומנות "אביבית". המסמך הראשון ימצא את כל העובדים בעלי כישורי "אביב", והשני יוסיף ערך "אבטחה" חדש למערך הכישורים שלהם.

ב- JSON שתי השאילתות הללו ייראו כך:

{"skills": {$ elemMatch: {"$ eq": "spring"}}} {"$ push": {"skills": "security"}}

וב- BSON הם יהיו:

שאילתת מסמך = מסמך חדש ("כישורים", מסמך חדש ("$ elemMatch", מסמך חדש ("$ eq", "אביב"))); עדכון מסמך = מסמך חדש ("$ push", מסמך חדש ("כישורים", "אבטחה")); collection.updateMany (שאילתה, עדכון); 

3.5. לִמְחוֹק

מחיקת שאילתות ב- MongoDB משתמשת בתחביר זהה לשאילתות חיפוש. אנו פשוט מספקים מסמך המפרט אחד או יותר קריטריונים להתאמה.

לדוגמא, נניח שמצאנו באג במאגר העובדים שלנו ויצרנו בטעות עובדים עם ערך שלילי לשנות שירות. כדי למצוא את כולם, נשתמש ב- JSON הבא:

{"years_of_service": {"$ lt": 0}}

מסמך BSON המקביל יהיה:

שאילתת מסמך = מסמך חדש ("years_of_service", מסמך חדש ("$ lt", 0)); collection.deleteMany (שאילתה);

4. מסקנה

במדריך זה ראינו מבוא בסיסי לבניית שאילתות MongoDB באמצעות ספריית BSON. באמצעות ה- API של BSON בלבד, יישמנו פעולות CRUD בסיסיות לאוסף MongoDB.

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

כמו תמיד, אתה יכול למצוא את דוגמאות הקוד לעיל ברפיו GitHub שלנו.


$config[zx-auto] not found$config[zx-overlay] not found