Sprievodca po MongoDB s Java
1. Prehľad
V tomto článku sa pozrieme na integráciu MongoDB, veľmi populárnej open source databázy NoSQL so samostatným klientom Java.
MongoDB je napísaný v jazyku C ++ a má množstvo solídnych funkcií, ako je redukcia mapy, automatické delenie, replikácia, vysoká dostupnosť atď.
2. MongoDB
Začnime niekoľkými kľúčovými bodmi o MongoDB samotnom:
- ukladá údaje do dokumentov podobných formátu JSON, ktoré môžu mať rôzne štruktúry
- používa dynamické schémy, čo znamená, že môžeme vytvárať záznamy bez toho, aby sme niečo preddefinovali
- štruktúru záznamu je možné zmeniť jednoduchým pridaním nových polí alebo odstránením existujúcich
Vyššie uvedený dátový model nám dáva schopnosť reprezentovať hierarchické vzťahy, ľahko ukladať polia a ďalšie zložitejšie štruktúry.
3. Terminológie
Pochopenie konceptov v MongoDB je jednoduchšie, ak ich môžeme porovnať s štruktúrami relačnej databázy.
Pozrime sa na analógie medzi Mongom a tradičným systémom MySQL:
- Tabuľka v MySQL sa stáva Zbierka v Mongu
- Riadok sa stáva a Dokument
- Stĺpec sa stáva a Lúka
- Pripája sa sú definované ako prepojenie a vložený Dokumenty
Toto je zjednodušený spôsob, ako sa samozrejme pozrieť na základné koncepty MongoDB, ale napriek tomu je to užitočné.
Poďme sa teraz ponoriť do implementácie, aby sme porozumeli tejto výkonnej databáze.
4. Maven závislosti
Musíme začať definovaním závislosti Java ovládača pre MongoDB:
org.mongodb mongo-java-driver 3.4.1
Ak chcete skontrolovať, či bola vydaná nejaká nová verzia knižnice, sledujte vydania tu.
5. Použitím MongoDB
Teraz začnime implementovať Mongo dotazy pomocou Javy. Budeme nasledovať základné operácie CRUD, pretože sú najlepšie na začiatok.
5.1. Nadviazať spojenie s MongoClient
Najskôr vytvoríme pripojenie k serveru MongoDB. Pri verzii> = 2.10.0 použijeme MongoClient:
MongoClient mongoClient = nový MongoClient ("localhost", 27017);
A pre staršie verzie použite Mongo trieda:
Mongo mongo = nové Mongo ("localhost", 27017);
5.2. Pripojenie k databáze
Teraz sa pripojme k našej databáze. Je zaujímavé poznamenať, že si ich nemusíme vytvárať. Keď Mongo uvidí, že databáza neexistuje, vytvorí ju pre nás:
DB databáza = mongoClient.getDB ("myMongoDb");
Niekedy štandardne MongoDB beží v autentifikovanom režime. V takom prípade sa musíme autentifikovať počas pripájania k databáze.
Môžeme to urobiť tak, ako je uvedené nižšie:
MongoClient mongoClient = nový MongoClient (); DB databáza = mongoClient.getDB ("myMongoDb"); boolean auth = database.authenticate ("používateľské meno", "pwd" .toCharArray ());
5.3. Zobraziť existujúce databázy
Poďme zobraziť všetky existujúce databázy. Keď chceme použiť príkazový riadok, syntax na zobrazenie databáz je podobná MySQL:
zobraziť databázy;
V prostredí Java zobrazujeme databázy pomocou nižšie uvedeného úryvku:
mongoClient.getDatabaseNames (). forEach (System.out :: println);
Výstupom bude:
lokálna 0,000 GB myMongoDb 0,000 GB
Vyššie, miestne je predvolená databáza Mongo.
5.4. Vytvor Zbierka
Začnime vytvorením a Zbierka (ekvivalent tabuľky pre MongoDB) pre našu databázu. Po pripojení k našej databáze môžeme vytvoriť Zbierka ako:
database.createCollection ("customers", null);
Teraz si pozrime všetky existujúce kolekcie pre aktuálnu databázu:
database.getCollectionNames (). forEach (System.out :: println);
Výstupom bude:
zákazníkov
5.5. Uložiť - Vložiť
The uložiť operácia má sémantiku uloženia alebo aktualizácie: ak je id je prítomný, vykonáva aktualizovať, ak nie - robí vložiť.
Keď sme uložiť nový zákazník:
DBCollection collection = database.getCollection ("zákazníci"); Dokument BasicDBObject = nový BasicDBObject (); document.put ("meno", "Shubham"); document.put ("spoločnosť", "Baeldung"); zbierka.vloženie (dokument);
Entita bude vložená do databázy:
{"_id": ObjectId ("33a52bb7830b8c9b233b4fe6"), "name": "Shubham", "spoločnosť": "Baeldung"}
Ďalej sa pozrieme na rovnakú operáciu - uložiť - s aktualizovať sémantika.
5.6. Uložiť - aktualizovať
Poďme sa teraz pozrieť na uložiť s aktualizovať sémantika fungujúca na existujúcom zákazníkovi:
{"_id": ObjectId ("33a52bb7830b8c9b233b4fe6"), "name": "Shubham", "spoločnosť": "Baeldung"}
Teraz, keď sme uložiť existujúci zákazník - budeme ho aktualizovať:
Dopyt BasicDBObject = nový BasicDBObject (); query.put ("meno", "Shubham"); BasicDBObject newDocument = nový BasicDBObject (); newDocument.put ("meno", "John"); BasicDBObject updateObject = nový BasicDBObject (); updateObject.put ("$ set", newDocument); collection.update (dopyt, updateObject);
Databáza bude vyzerať takto:
{"_id": ObjectId ("33a52bb7830b8c9b233b4fe6"), "name": "John", "spoločnosť": "Baeldung"}
Ako vidíte, v tomto konkrétnom príklade uložiť používa sémantiku aktualizovať, pretože používame objekt s daným _id.
5.7. Prečítaj Dokument Z a Zbierka
Poďme hľadať a Dokument v Zbierka zadaním dotazu:
BasicDBObject searchQuery = nový BasicDBObject (); searchQuery.put ("meno", "John"); DBCursor cursor = collection.find (searchQuery); while (cursor.hasNext ()) {System.out.println (cursor.next ()); }
Ukáže sa jediný Dokument už máme v našom Zbierka:
[{"_id": ObjectId ("33a52bb7830b8c9b233b4fe6"), "name": "John", "spoločnosť": "Baeldung"}]
5.8. Odstrániť a Dokument
Prejdime k našej poslednej operácii CRUD, vymazanie:
BasicDBObject searchQuery = nový BasicDBObject (); searchQuery.put ("meno", "John"); collection.remove (searchQuery);
Po vykonaní vyššie uvedeného príkazu je náš jediný Dokument bude odstránený z Zbierka.
6. Záver
Tento článok bol krátkym úvodom do používania MongoDB z Javy.
Implementáciu všetkých týchto príkladov a útržkov kódu nájdete na serveri GitHub - jedná sa o projekt založený na Maven, takže by malo byť ľahké ho importovať a spustiť tak, ako je.