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.