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.