En guide til MongoDB med Java

1. Oversigt

I denne artikel ser vi på at integrere MongoDB, en meget populær NoSQL open source-database med en enkeltstående Java-klient.

MongoDB er skrevet i C ++ og har et stort antal solide funktioner såsom kortreduktion, automatisk sharding, replikering, høj tilgængelighed osv.

2. MongoDB

Lad os starte med et par nøglepunkter om selve MongoDB:

  • gemmer data i JSON-lignende dokumenter, der kan have forskellige strukturer
  • bruger dynamiske skemaer, hvilket betyder, at vi kan oprette poster uden foruddefineret noget
  • strukturen af ​​en post kan ændres ved blot at tilføje nye felter eller slette eksisterende

Ovennævnte datamodel giver os muligheden for at repræsentere hierarkiske relationer, nemt at gemme arrays og andre mere komplekse strukturer.

3. Terminologier

At forstå begreber i MongoDB bliver lettere, hvis vi kan sammenligne dem med relationelle databasestrukturer.

Lad os se analogierne mellem Mongo og et traditionelt MySQL-system:

  • Bord i MySQL bliver en Kollektion i Mongo
  • Række bliver en Dokument
  • Kolonne bliver en Mark
  • Tilslutter sig er defineret som sammenkædning og indlejret Dokumenter

Dette er en forenklet måde at se på MongoDB-kernebegreberne selvfølgelig, men alligevel nyttige.

Lad os nu dykke ned i implementeringen for at forstå denne kraftfulde database.

4. Maven afhængigheder

Vi skal starte med at definere afhængigheden af ​​en Java Driver til MongoDB:

 org.mongodb mongo-java-driver 3.4.1 

For at kontrollere om der er frigivet en ny version af biblioteket - følg udgivelserne her.

5. Ved brug af MongoDB

Lad os nu begynde at implementere Mongo-forespørgsler med Java. Vi følger med de grundlæggende CRUD-operationer, da de er de bedste til at begynde med.

5.1. Opret forbindelse med MongoClient

Lad os først oprette forbindelse til en MongoDB-server. Med version> = 2.10.0 bruger vi MongoClient:

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

Og til ældre versioner brug Mongo klasse:

Mongo mongo = ny Mongo ("lokal vært", 27017);

5.2. Opretter forbindelse til en database

Lad os nu oprette forbindelse til vores database. Det er interessant at bemærke, at vi ikke behøver at oprette en. Når Mongo ser, at databasen ikke eksisterer, opretter den den for os:

DB-database = mongoClient.getDB ("myMongoDb");

Nogle gange kører MongoDB som standard i godkendt tilstand som standard. I så fald skal vi godkende, når vi opretter forbindelse til en database.

Vi kan gøre det som vist nedenfor:

MongoClient mongoClient = ny MongoClient (); DB-database = mongoClient.getDB ("myMongoDb"); boolsk auth = database.authenticate ("brugernavn", "pwd" .toCharArray ());

5.3. Vis eksisterende databaser

Lad os vise alle eksisterende databaser. Når vi vil bruge kommandolinjen, ligner syntaksen for at vise databaser MySQL:

vis databaser;

I Java viser vi databaser ved hjælp af uddrag nedenfor:

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

Outputtet vil være:

lokal 0,000 GB myMongoDb 0,000 GB

Over, lokal er Mongo-standarddatabasen.

5.4. Lave en Kollektion

Lad os starte med at oprette en Kollektion (tabelækvivalent for MongoDB) til vores database. Når vi har oprettet forbindelse til vores database, kan vi oprette en Kollektion som:

database.createCollection ("kunder", null);

Lad os nu vise alle eksisterende samlinger til den aktuelle database:

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

Outputtet vil være:

kunder

5.5. Gem - Indsæt

Det Gemme operation har gem eller opdater semantik: hvis en id er til stede, udfører den en opdatering, hvis ikke - det gør en indsæt.

Når vi Gemme en ny kunde:

DBCollection samling = database.getCollection ("kunder"); BasicDBObject-dokument = nyt BasicDBObject (); document.put ("navn", "Shubham"); document.put ("firma", "Baeldung"); collection.insert (dokument);

Enheden indsættes i en database:

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

Dernæst ser vi på den samme operation - Gemme - med opdatering semantik.

5.6. Gem - Opdater

Lad os nu se på Gemme med opdatering semantik, der opererer på en eksisterende kunde:

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

Nu, når vi Gemme den eksisterende kunde - vi opdaterer den:

BasicDBObject-forespørgsel = ny BasicDBObject (); query.put ("navn", "Shubham"); BasicDBObject newDocument = ny BasicDBObject (); newDocument.put ("navn", "John"); BasicDBObject updateObject = ny BasicDBObject (); updateObject.put ("$ set", newDocument); collection.update (forespørgsel, updateObject);

Databasen vil se sådan ud:

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

Som du kan se, i dette særlige eksempel, Gemme bruger semantikken i opdatering, fordi vi bruger objekt med givet _id.

5.7. Læs en Dokument Fra en Kollektion

Lad os søge efter en Dokument i en Kollektion ved at stille en forespørgsel:

BasicDBObject searchQuery = ny BasicDBObject (); searchQuery.put ("navn", "John"); DBCursor cursor = collection.find (searchQuery); mens (cursor.hasNext ()) {System.out.println (cursor.next ()); }

Det viser det eneste Dokument vi har nu i vores Kollektion:

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

5.8. Slet -en Dokument

Lad os gå videre til vores sidste CRUD-operation, sletning:

BasicDBObject searchQuery = ny BasicDBObject (); searchQuery.put ("navn", "John"); collection.remove (searchQuery);

Med ovenstående kommando udført, vores eneste Dokument fjernes fra Kollektion.

6. Konklusion

Denne artikel var en hurtig introduktion til brug af MongoDB fra Java.

Implementeringen af ​​alle disse eksempler og kodestykker findes på GitHub - dette er et Maven-baseret projekt, så det skal være let at importere og køre, som det er.