Een gids voor MongoDB met Java

1. Overzicht

In dit artikel zullen we kijken naar de integratie van MongoDB, een zeer populaire NoSQL open source-database met een zelfstandige Java-client.

MongoDB is geschreven in C ++ en heeft een behoorlijk aantal solide functies, zoals kaartvermindering, auto-sharding, replicatie, hoge beschikbaarheid enz.

2. MongoDB

Laten we beginnen met een paar belangrijke punten over MongoDB zelf:

  • slaat gegevens op in JSON-achtige documenten die verschillende structuren kunnen hebben
  • maakt gebruik van dynamische schema's, wat betekent dat we records kunnen maken zonder iets vooraf te definiëren
  • de structuur van een record kan eenvoudig worden gewijzigd door nieuwe velden toe te voegen of bestaande te verwijderen

Het bovengenoemde datamodel geeft ons de mogelijkheid om hiërarchische relaties weer te geven, om arrays en andere complexere structuren gemakkelijk op te slaan.

3. Terminologieën

Begrip van concepten in MongoDB wordt gemakkelijker als we ze kunnen vergelijken met relationele databasestructuren.

Laten we eens kijken naar de overeenkomsten tussen Mongo en een traditioneel MySQL-systeem:

  • Tafel in MySQL wordt een Verzameling in Mongo
  • Rij wordt een Document
  • Kolom wordt een Veld
  • Doet mee worden gedefinieerd als koppelen en ingebed documenten

Dit is natuurlijk een simplistische manier om naar de MongoDB-kernconcepten te kijken, maar toch nuttig.

Laten we nu eens kijken naar de implementatie om deze krachtige database te begrijpen.

4. Afhankelijkheden van Maven

We moeten beginnen met het definiëren van de afhankelijkheid van een Java-stuurprogramma voor MongoDB:

 org.mongodb mongo-java-driver 3.4.1 

Als u wilt controleren of er een nieuwe versie van de bibliotheek is uitgebracht, kunt u de releases hier volgen.

5. Gebruik makend van MongoDB

Laten we nu beginnen met het implementeren van Mongo-query's met Java. We zullen de basis CRUD-bewerkingen volgen, aangezien deze het beste zijn om mee te beginnen.

5.1. Maak een verbinding met MongoClient

Laten we eerst verbinding maken met een MongoDB-server. Met versie> = 2.10.0 gebruiken we de MongoClient:

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

En gebruik voor oudere versies Mongo klasse:

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

5.2. Verbinding maken met een database

Laten we nu verbinding maken met onze database. Het is interessant om op te merken dat we er geen hoeven te maken. Als Mongo ziet dat die database niet bestaat, wordt deze voor ons aangemaakt:

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

Soms wordt MongoDB standaard uitgevoerd in geverifieerde modus. In dat geval moeten we authenticeren tijdens het verbinden met een database.

We kunnen het doen zoals hieronder weergegeven:

MongoClient mongoClient = nieuwe MongoClient (); DB-database = mongoClient.getDB ("myMongoDb"); boolean auth = database.authenticate ("gebruikersnaam", "pwd" .toCharArray ());

5.3. Toon bestaande databases

Laten we alle bestaande databases weergeven. Als we de opdrachtregel willen gebruiken, is de syntaxis om databases weer te geven vergelijkbaar met MySQL:

toon databases;

In Java geven we databases weer met behulp van het onderstaande fragment:

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

De output zal zijn:

lokaal 0.000GB myMongoDb 0.000GB

Bovenstaande, lokaal is de standaard Mongo-database.

5.4. Maak een Verzameling

Laten we beginnen met het maken van een Verzameling (tabelequivalent voor MongoDB) voor onze database. Zodra we verbinding hebben gemaakt met onze database, kunnen we een Verzameling net zo:

database.createCollection ("klanten", null);

Laten we nu alle bestaande collecties voor de huidige database weergeven:

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

De output zal zijn:

klanten

5.5. Opslaan - invoegen

De sparen operatie heeft save-or-update semantiek: als een ID kaart aanwezig is, voert het een bijwerken, zo niet - het doet een invoegen.

Wanneer we sparen een nieuwe klant:

DBCollection collection = database.getCollection ("klanten"); BasicDBObject document = nieuw BasicDBObject (); document.put ("naam", "Shubham"); document.put ("bedrijf", "Baeldung"); collection.insert (document);

De entiteit wordt in een database ingevoegd:

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

Vervolgens kijken we naar dezelfde bewerking - sparen - met bijwerken semantiek.

5.6. Opslaan - bijwerken

Laten we nu eens kijken sparen met bijwerken semantiek, opererend op een bestaande klant:

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

Nu, wanneer we sparen de bestaande klant - we zullen het updaten:

BasicDBObject-query = nieuwe BasicDBObject (); query.put ("naam", "Shubham"); BasicDBObject newDocument = nieuwe BasicDBObject (); newDocument.put ("naam", "John"); BasicDBObject updateObject = nieuwe BasicDBObject (); updateObject.put ("$ set", newDocument); collection.update (query, updateObject);

De database ziet er als volgt uit:

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

Zoals u kunt zien, in dit specifieke voorbeeld, sparen gebruikt de semantiek van bijwerken, omdat we object gebruiken met gegeven _ID kaart.

5.7. Lees een Document Van een Verzameling

Laten we zoeken naar een Document in een Verzameling door een vraag te stellen:

BasicDBObject searchQuery = nieuwe BasicDBObject (); searchQuery.put ("naam", "Jan"); DBCursor cursor = collection.find (searchQuery); while (cursor.hasNext ()) {System.out.println (cursor.next ()); }

Het zal de enige laten zien Document we hebben inmiddels in onze Verzameling:

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

5.8. Verwijderen een Document

Laten we verder gaan naar onze laatste CRUD-bewerking, verwijdering:

BasicDBObject searchQuery = nieuwe BasicDBObject (); searchQuery.put ("naam", "Jan"); collection.remove (searchQuery);

Met bovenstaande opdracht uitgevoerd, onze enige Document wordt verwijderd uit de Verzameling.

6. Conclusie

Dit artikel was een korte inleiding tot het gebruik van MongoDB vanuit Java.

De implementatie van al deze voorbeelden en codefragmenten is te vinden op GitHub - dit is een op Maven gebaseerd project, dus het zou gemakkelijk te importeren en uit te voeren moeten zijn zoals het is.