En guide til MongoDB med Java

1. Oversikt

I denne artikkelen vil vi se på integrering av MongoDB, en veldig populær NoSQL open source-database med en frittstående Java-klient.

MongoDB er skrevet i C ++ og har ganske mange solide funksjoner som kartreduksjon, automatisk sharding, replikering, høy tilgjengelighet etc.

2. MongoDB

La oss starte med noen viktige punkter om selve MongoDB:

  • lagrer data i JSON-lignende dokumenter som kan ha forskjellige strukturer
  • bruker dynamiske skjemaer, noe som betyr at vi kan lage poster uten å forhåndsdefinere noe
  • strukturen til en post kan endres ganske enkelt ved å legge til nye felt eller slette eksisterende

Ovennevnte datamodell gir oss muligheten til å representere hierarkiske forhold, til å lagre matriser og andre mer komplekse strukturer enkelt.

3. Terminologier

Å forstå konsepter i MongoDB blir lettere hvis vi kan sammenligne dem med relasjonelle databasestrukturer.

La oss se analogiene mellom Mongo og et tradisjonelt MySQL-system:

  • Bord i MySQL blir en Samling i Mongo
  • Rad blir en Dokument
  • Kolonne blir en Felt
  • Blir med er definert som kobling og en del av dokumenter

Dette er en forenklet måte å se på MongoDB-kjernekonseptene selvfølgelig, men likevel nyttig.

La oss nå dykke ned i implementeringen for å forstå denne kraftige databasen.

4. Maven avhengigheter

Vi må begynne med å definere avhengigheten av en Java Driver for MongoDB:

 org.mongodb mongo-java-driver 3.4.1 

For å sjekke om noen ny versjon av biblioteket er utgitt - spor utgivelsene her.

5. Ved hjelp av MongoDB

La oss nå begynne å implementere Mongo-spørsmål med Java. Vi vil følge med de grunnleggende CRUD-operasjonene, da de er de beste til å begynne med.

5.1. Lag en forbindelse med MongoClient

La oss først koble til en MongoDB-server. Med versjon> = 2.10.0 bruker vi MongoClient:

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

Og for eldre versjoner bruk Mongo klasse:

Mongo mongo = ny Mongo ("lokal vert", 27017);

5.2. Koble til en database

La oss nå koble til databasen vår. Det er interessant å merke seg at vi ikke trenger å lage en. Når Mongo ser at databasen ikke eksisterer, vil den opprette den for oss:

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

Noen ganger kjører MongoDB som standard i autentisert modus. I så fall må vi godkjenne mens vi kobler til en database.

Vi kan gjøre det som presentert nedenfor:

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

5.3. Vis eksisterende databaser

La oss vise alle eksisterende databaser. Når vi vil bruke kommandolinjen, ligner syntaksen for å vise databaser MySQL:

vise databaser;

I Java viser vi databaser med utdrag nedenfor:

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

Resultatet blir:

lokal 0,000 GB myMongoDb 0,000 GB

Ovenfor, lokal er standard Mongo-database.

5.4. Lage en Samling

La oss starte med å lage en Samling (tabellekvivalent for MongoDB) for databasen vår. Når vi har koblet til databasen vår, kan vi lage en Samling som:

database.createCollection ("kunder", null);

La oss nå vise alle eksisterende samlinger for gjeldende database:

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

Resultatet blir:

kunder

5.5. Lagre - Sett inn

De lagre operasjonen har lagre eller oppdater semantikk: hvis en id er til stede, utfører den en Oppdater, hvis ikke - det gjør en sett inn.

Når vi lagre en ny kunde:

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

Enheten vil bli satt inn i en database:

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

Deretter ser vi på den samme operasjonen - lagre - med Oppdater semantikk.

5.6. Lagre - Oppdater

La oss nå se på lagre med Oppdater semantikk, som opererer på en eksisterende kunde:

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

Nå når vi lagre den eksisterende kunden - vi vil oppdatere den:

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

Databasen vil se slik ut:

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

Som du kan se, i dette spesifikke eksemplet, lagre bruker semantikken til Oppdater, fordi vi bruker objekt med gitt _id.

5.7. Lese en Dokument Fra en Samling

La oss søke etter en Dokument i en Samling ved å gjøre et spørsmål:

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

Det vil vise det eneste Dokument vi har nå i vår Samling:

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

5.8. Slett en Dokument

La oss gå videre til vår siste CRUD-operasjon, sletting:

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

Med kommandoen over utført, vår eneste Dokument vil bli fjernet fra Samling.

6. Konklusjon

Denne artikkelen var en rask introduksjon til bruk av MongoDB fra Java.

Implementeringen av alle disse eksemplene og kodebitene finner du på GitHub - dette er et Maven-basert prosjekt, så det skal være enkelt å importere og kjøre som det er.