מדריך ל- MongoDB עם Java

1. סקירה כללית

במאמר זה נבחן שילוב של MongoDB, מאגר קוד פתוח NoSQL פופולרי מאוד עם לקוח Java עצמאי.

MongoDB כתוב ב- C ++ ויש לו מספר לא מבוטל של מאפיינים מוצקים כגון הפחתת מפה, שיתוף אוטומטי, שכפול, זמינות גבוהה וכו '.

2. MongoDB

נתחיל בכמה נקודות עיקריות לגבי MongoDB עצמה:

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

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

3. טרמינולוגיות

הבנת המושגים ב- MongoDB הופכת קלה יותר אם נוכל להשוות אותם למבני בסיס נתונים יחסיים.

בואו נראה את האנלוגיות בין מונגו למערכת MySQL מסורתית:

  • שולחן ב- MySQL הופך ל- אוסף במונגו
  • שׁוּרָה הופך ל מסמך
  • טור הופך ל שדה
  • מצטרף מוגדרים כ- מְקַשֵׁר ו מוטבע מסמכים

זוהי דרך פשטנית להסתכל על מושגי הליבה של MongoDB כמובן, אך בכל זאת שימושיים.

עכשיו, בואו נצלול ליישום כדי להבין את בסיס הנתונים החזק הזה.

4. תלות Maven

עלינו להתחיל בהגדרת התלות של מנהל התקן Java עבור MongoDB:

 org.mongodb mongo-java-driver 3.4.1 

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

5. באמצעות MongoDB

עכשיו, בואו נתחיל ליישם שאילתות מונגו עם Java. נעקוב אחר פעולות ה- CRUD הבסיסיות מכיוון שהן הטובות ביותר להתחיל איתן.

5.1. ליצור קשר עם MongoClient

ראשית, בואו נוצר חיבור לשרת MongoDB. עם גרסה> = 2.10.0, נשתמש ב- MongoClient:

MongoClient mongoClient = MongoClient חדש ("localhost", 27017);

ולגירסאות ישנות יותר להשתמש מונגו מעמד:

מונגו מונגו = מונגו חדש ("localhost", 27017);

5.2. חיבור למסד נתונים

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

מסד נתונים של DB = mongoClient.getDB ("myMongoDb");

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

אנו יכולים לעשות זאת כפי שמוצג להלן:

MongoClient mongoClient = MongoClient חדש (); מסד נתונים של DB = mongoClient.getDB ("myMongoDb"); authooly = database.authenticate ("שם משתמש", "pwd" .toCharArray ());

5.3. הראה מסדי נתונים קיימים

בואו נציג את כל מסדי הנתונים הקיימים. כשאנחנו רוצים להשתמש בשורת הפקודה, התחביר להצגת מסדי נתונים דומה ל- MySQL:

הצגת מאגרי מידע;

ב- Java אנו מציגים מסדי נתונים באמצעות קטע למטה:

mongoClient.getDatabaseNames (). forEach (System.out :: println);

התפוקה תהיה:

0.000GB מקומי myMongoDb 0.000GB

מֵעַל, מְקוֹמִי הוא מסד הנתונים המוגדר כברירת מחדל של Mongo.

5.4. ליצור אוסף

נתחיל ביצירת a אוסף (שווה ערך לטבלה עבור MongoDB) עבור מסד הנתונים שלנו. לאחר שהתחברנו למסד הנתונים שלנו, נוכל ליצור אוסף כפי ש:

database.createCollection ("לקוחות", null);

כעת, בואו נציג את כל האוספים הקיימים עבור מסד הנתונים הנוכחי:

database.getCollectionNames (). forEach (System.out :: println);

התפוקה תהיה:

לקוחות

5.5. שמור - הכנס

ה לשמור לפעולה יש סמנטיקה שמירה או עדכון: אם תְעוּדַת זֶהוּת נוכח, הוא מבצע עדכון, אם לא - זה עושה לְהַכנִיס.

כאשר אנו לשמור לקוח חדש:

אוסף DBCollection = database.getCollection ("לקוחות"); מסמך BasicDBObject = BasicDBObject חדש (); document.put ("שם", "שובהם"); document.put ("חברה", "באלדונג"); collection.insert (מסמך);

הישות תוכנס למסד נתונים:

{"_id": ObjectId ("33a52bb7830b8c9b233b4fe6"), "name": "Shubham", "company": "Baeldung"}

לאחר מכן, נבחן את אותה הפעולה - לשמור - עם עדכון סֵמַנטִיקָה.

5.6. שמור - עדכן

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

{"_id": ObjectId ("33a52bb7830b8c9b233b4fe6"), "name": "Shubham", "company": "Baeldung"}

עכשיו, כשאנחנו לשמור הלקוח הקיים - נעדכן אותו:

שאילתת BasicDBObject = BasicDBObject חדש (); query.put ("שם", "שובהם"); BasicDBObject newDocument = חדש BasicDBObject (); newDocument.put ("שם", "ג'ון"); BasicDBObject updateObject = BasicDBObject חדש (); updateObject.put ("$ set", newDocument); collection.update (שאילתה, updateObject);

מסד הנתונים ייראה כך:

{"_id": ObjectId ("33a52bb7830b8c9b233b4fe6"), "name": "John", "company": "Baeldung"}

כפי שאתה יכול לראות, בדוגמה הספציפית הזו, לשמור משתמש בסמנטיקה של עדכון, כי אנו משתמשים באובייקט עם נתון _תְעוּדַת זֶהוּת.

5.7. לקרוא מסמך מ אוסף

בואו נחפש a מסמך ב אוסף על ידי ביצוע שאילתה:

BasicDBObject searchQuery = חדש BasicDBObject (); searchQuery.put ("שם", "ג'ון"); סמן DBC סמן = collection.find (searchQuery); בעוד (cursor.hasNext ()) {System.out.println (cursor.next ()); }

זה יראה את היחיד מסמך יש לנו עכשיו ב אוסף:

[{"_id": ObjectId ("33a52bb7830b8c9b233b4fe6"), "name": "John", "company": "Baeldung"}]

5.8. לִמְחוֹק א מסמך

בואו נתקדם לפעולת ה- CRUD האחרונה שלנו, מחיקה:

BasicDBObject searchQuery = חדש BasicDBObject (); searchQuery.put ("שם", "ג'ון"); collection.remove (searchQuery);

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

6. מסקנה

מאמר זה היה מבוא מהיר לשימוש ב- MongoDB מג'אווה.

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