Vodič za MongoDB s Javom

1. Pregled

U ovom ćemo članku pogledati integraciju MongoDB, vrlo popularne baze podataka NoSQL otvorenog koda sa samostalnim Java klijentom.

MongoDB je napisan na jeziku C ++ i ima popriličan broj čvrstih značajki kao što su smanjenje karte, automatsko oštrenje, replikacija, velika dostupnost itd.

2. MongoDB

Počnimo s nekoliko ključnih točaka o samom MongoDB-u:

  • pohranjuje podatke u JSON-slične dokumente koji mogu imati različite strukture
  • koristi dinamičke sheme, što znači da možemo stvarati zapise, a da ništa unaprijed ne definiramo
  • struktura zapisa može se promijeniti jednostavnim dodavanjem novih polja ili brisanjem postojećih

Gore spomenuti model podataka daje nam sposobnost da predstavimo hijerarhijske odnose, da lako pohranimo nizove i druge složenije strukture.

3. Terminologije

Razumijevanje koncepata u MongoDB-u postaje lakše ako ih možemo usporediti s relacijskim strukturama baze podataka.

Pogledajmo analogije između Monga i tradicionalnog MySQL sustava:

  • Stol u MySQL-u postaje Kolekcija u Mongu
  • Red postaje a Dokument
  • Stupac postaje a Polje
  • Pridružuje se definirani su kao povezivanje i ugrađen dokumenti

Ovo je pojednostavljeni način da se sagledaju temeljni koncepti MongoDB-a, ali unatoč tome koristan.

Sada, krenimo u implementaciju da bismo razumjeli ovu moćnu bazu podataka.

4. Ovisnosti Mavena

Moramo započeti definiranjem ovisnosti Java upravljačkog programa za MongoDB:

 org.mongodb mongo-java-driver 3.4.1 

Da biste provjerili je li izdana neka nova verzija knjižnice, izdanja pratite ovdje.

5. Koristeći MongoDB

Sada, krenimo s implementacijom Mongo upita s Javom. Nastavit ćemo s osnovnim CRUD operacijama jer je s njima najbolje započeti.

5.1. Uspostavite vezu s MongoClient

Prvo, napravimo vezu s MongoDB poslužiteljem. S verzijom> = 2.10.0, koristit ćemo MongoClient:

MongoClient mongoClient = novi MongoClient ("localhost", 27017);

A za starije verzije koristite Mongo razred:

Mongo mongo = novi Mongo ("localhost", 27017);

5.2. Povezivanje s bazom podataka

Sada, spojimo se s našom bazom podataka. Zanimljivo je primijetiti da ga ne trebamo stvarati. Kad Mongo vidi da baza podataka ne postoji, stvorit će je za nas:

DB baza podataka = mongoClient.getDB ("myMongoDb");

Ponekad, prema zadanim postavkama, MongoDB radi u ovjerenom načinu. U tom slučaju moramo provjeriti autentičnost tijekom povezivanja s bazom podataka.

To možemo učiniti kako je prikazano u nastavku:

MongoClient mongoClient = novi MongoClient (); DB baza podataka = mongoClient.getDB ("myMongoDb"); boolean auth = database.authenticate ("korisničko ime", "pwd" .toCharArray ());

5.3. Prikaži postojeće baze podataka

Prikažimo sve postojeće baze podataka. Kada želimo koristiti naredbeni redak, sintaksa za prikaz baza podataka slična je MySQL-u:

pokazati baze podataka;

U Javi baze podataka prikazujemo pomoću donjeg isječka:

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

Izlaz će biti:

lokalni 0.000 GB myMongoDb 0.000 GB

Iznad, lokalno je zadana Mongo baza podataka.

5.4. Stvoriti Kolekcija

Počnimo s izradom a Kolekcija (tablični ekvivalent za MongoDB) za našu bazu podataka. Nakon što se povežemo s našom bazom podataka, možemo napraviti Kolekcija kao:

database.createCollection ("kupci", null);

Sada, prikažimo sve postojeće zbirke za trenutnu bazu podataka:

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

Izlaz će biti:

kupci

5.5. Spremi - Umetni

The uštedjeti operacija ima semantiku spremi ili ažuriraj: ako je iskaznica je prisutan, izvodi ažuriranje, ako ne - to znači umetnuti.

Kad smo uštedjeti novi kupac:

DBCollection collection = database.getCollection ("kupci"); BasicDBObject dokument = novi BasicDBObject (); document.put ("ime", "Shubham"); document.put ("tvrtka", "Baeldung"); collection.insert (dokument);

Entitet će se umetnuti u bazu podataka:

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

Dalje ćemo pogledati istu operaciju - uštedjeti - sa ažuriranje semantika.

5.6. Spremi - Ažuriraj

Pogledajmo sada uštedjeti s ažuriranje semantika, koja djeluje na postojećeg kupca:

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

Sad, kad mi uštedjeti postojeći kupac - ažurirat ćemo ga:

Upit BasicDBObject = novi BasicDBObject (); query.put ("ime", "Shubham"); BasicDBObject newDocument = novi BasicDBObject (); newDocument.put ("ime", "Ivan"); BasicDBObject updateObject = novi BasicDBObject (); updateObject.put ("$ set", newDocument); collection.update (upit, updateObject);

Baza podataka izgledat će ovako:

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

Kao što vidite, u ovom konkretnom primjeru, uštedjeti koristi semantiku ažuriranje, jer koristimo objekt s danim _iskaznica.

5.7. Čitati Dokument Od Kolekcija

Potražimo a Dokument u Kolekcija postavljanjem upita:

BasicDBObject searchQuery = novi BasicDBObject (); searchQuery.put ("ime", "Ivan"); DBCursor kursor = collection.find (searchQuery); while (cursor.hasNext ()) {System.out.println (cursor.next ()); }

Pokazat će jedino Dokument do sada imamo u svom Kolekcija:

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

5.8. Izbrisati a Dokument

Prijeđimo na našu posljednju CRUD operaciju, brisanje:

BasicDBObject searchQuery = novi BasicDBObject (); searchQuery.put ("ime", "Ivan"); collection.remove (searchQuery);

S izvršenom gornjom naredbom, našom jedinom Dokument bit će uklonjen iz Kolekcija.

6. Zaključak

Ovaj je članak bio kratki uvod u upotrebu MongoDB-a s Jave.

Provedbu svih ovih primjera i isječaka koda možete pronaći na GitHubu - ovo je projekt zasnovan na Mavenu, pa bi ga trebalo lako uvesti i pokrenuti kakav jest.