Alles, was Sie über MongoDB Client wissen müssen



Dieser Artikel bietet Ihnen ein detailliertes und umfassendes Wissen über MongoDB Client mit all seinen Funktionen und Verwendungsmöglichkeiten.

Wenn Sie schon seit einiger Zeit ein relationales Datenbankverwaltungssystem sind, sind Sie wahrscheinlich auf den Namen von gestoßen . MongoDb wurde erstmals im Jahr 2009 eingeführt und ist heute eines der beliebtesten relationalen Datenbankverwaltungssysteme der Branche. Der Hauptgrund für die wahnsinnige Popularität trotz der Präsenz älterer relationaler Datenbanksoftware-Manager wie MySql auf dem Markt ist die große Anzahl und Vielseitigkeit. Durch die Verwendung von MongoDB entfallen viele Anforderungen. Eine davon ist die Notwendigkeit, bei jedem Start eines neuen Projekts eine Datenbank zu erstellen und den Datentyp zu definieren. Agenda des MongoDB-Kundenartikels:





Um jedoch die maximale Funktionalität von MongoDB zu erreichen, muss man mit dem MongoDB-Client vertraut sein, und in diesem Artikel werden wir genau das diskutieren.

Voraussetzungen für MongoDB Client

Um diesen Artikel vollständig zu erhalten, müssen Sie zunächst die folgenden Voraussetzungen erfüllen.



Haben Sie bereits eine IDE in Ihrem System.
Java Development Kit oder JDK Version 1.8 und höher, installiert mit JAVA_HOME, richtig konfiguriert.
Docker oder MongoDB installiert.
Apache Maven Version 3.5.3 und höher.

Die Architektur, die wir in diesem Handbuch erstellt und verwendet haben, ist eine der einfachsten. Bei der Ausführung kann der Benutzer problemlos Daten und Elemente zu einer Liste hinzufügen. Anschließend werden diese automatisch in der Datenbank aktualisiert.

MongoDB Client Logo



Gleichzeitig haben wir sichergestellt, dass die gesamte Kommunikation zwischen den Daten und dem Server in JSON erfolgt und alle Daten in MongoDB gespeichert sind.

Sortieralgorithmus c ++

Einstieg

Führen Sie die folgenden Schritte aus, um mit diesem Projekt zu beginnen.

Schritt 1: Erstellen des Projekts auf Maven

Der erste Schritt besteht immer darin, ein neues Projekt zu erstellen und dazu den folgenden Code zu verwenden.

mvn io.quarkus: quarkus-maven-plugin: 0.22.0: create -DprojectGroupId = org.acme -DprojectArtifactId = using-mongodb-client -DclassName = 'org.acme.rest.json.FruitResource' -Dpath = '/ obst '-Dextensions =' resteasy-jsonb, mongodb-client '

Wenn Sie den obigen Befehl ausführen, importiert die IDE die Clients JSON-B, MongoDb sowie RESTEasy / JAX-RS auf Ihr System.

Fahren Sie mit Schritt 2 fort.

Schritt 2: Hinzufügen Ihres ersten JSON-Restdienstes

Verwenden Sie dazu den folgenden Code. Paket org.acme.rest.json import java.util.Objects öffentliche Klasse Fruit {privater Stringname private Stringbeschreibung public Fruit () {} public Fruit (Stringname, Stringbeschreibung) {this.name = name this.description = description } public String getName () {return name} public void setName (String name) {this.name = name} public String getDescription () {return description} public void setDescription (String description) {this.description = description} @Override public boolean equals (Object obj) {if (! (obj instanceof Fruit)) {return false} Fruit other = (Fruit) obj return Objects.equals (other.name, this.name)} @Override public int hashCode () {return Objects.hash (this.name)}}

Mit dem obigen Beispiel haben wir zuerst die Frucht erstellt, die später im Programm verwendet wird.

Als nächstes müssen wir die Datei org.acme.rest.json.FruitService erstellen, die die Benutzerebene unserer Anwendung darstellt. Verwenden Sie dazu den folgenden Code.

Paket org.acme.rest.json importieren com.mongodb.client.MongoClient importieren com.mongodb.client.MongoCollection importieren com.mongodb.client.MongoCursor importieren org.bson.Document importieren javax.enterprise.context.ApplicationScoped importieren javax.inject .Inject import java.util.ArrayList import java.util.List @ApplicationScoped öffentliche Klasse FruitService {@Inject MongoClient mongoClient public List list () {List list = new ArrayList () MongoCursor cursor = getCollection (). Find (). Iterator ( ) try {while (cursor.hasNext ()) {Document document = cursor.next () Fruitruit = new Fruit ()ruit.setName (document.getString ('name')) obst.setDescription (document.getString ('description ')) list.add (Frucht)}} endlich {cursor.close ()} Rückgabeliste} public void add (Fruchtfrucht) {Dokument document = new Document () .append (' name ', obst.getName ()) .append ('description' ,ruit.getDescription ()) getCollection (). insertOne (document)} private MongoCollection getCollection () {return mongoClient.getDatabase ('ruit '). getCol lection ('ruit ')}} Jetzt müssen wir die org.acme.rest.json.FruitResource-Klasse entsprechend unseren Anforderungen bearbeiten. Verwenden Sie dazu den folgenden Code. @Path ('/ obst') @Produces (MediaType.APPLICATION_JSON) @Consumes (MediaType.APPLICATION_JSON) öffentliche Klasse FruitResource {@Inject FruitServiceruitService @GET public List list () {returnruitService.list ()} @POST public List add (Obst Obst) {ruitService.add (Obst) Rückgabeliste ()}}

Fahren Sie mit Schritt 3 fort.

Schritt 3: Konfigurieren der MongoDb-Datenbank

Die Syntax sowie der Standardcode zum Konfigurieren der mongoDb-Datenbank sind nachstehend angegeben.

# Konfigurieren Sie den mongoDB-Client für einen Replikatsatz aus zwei Knoten. quarkus.mongodb.connection-string = mongodb: // mongo1: 27017, mongo2: 27017

In unserem Fall verwenden wir den folgenden Code, um die Datenbank zu konfigurieren.

# Konfigurieren Sie den MongoDB-Client für einen Replikatsatz aus zwei Knoten. quarkus.mongodb.connection-string = mongodb: // localhost: 27017

Fahren Sie mit Schritt 4 fort.

Schritt 4: Ausführen der konfigurierten MongoDB-Datenbank

Der nächste Schritt besteht darin, die gerade erstellte MongoDB-Datenbank auszuführen. Verwenden Sie dazu den folgenden Code.

Unterschied zwischen CSS und CSS3
Docker-Lauf -ti --rm -p 27017: 27017 mongo: 4.0

Fahren Sie mit Schritt 5 fort.

Schritt 5: Erstellen des Frontends

Nachdem alle Arbeiten im Backend der Anwendung abgeschlossen sind, werfen wir einen Blick auf den Code, der zum Codieren des Frontends unserer Anwendung verwendet wird.

Paket org.acme.rest.json importieren io.quarkus.mongodb.ReactiveMongoClient importieren io.quarkus.mongodb.ReactiveMongoCollection importieren org.bson.Document importieren javax.enterprise.context.ApplicationScoped importieren javax.inject.Inject importieren java.util.List import java.util.concurrent.CompletionStage @ApplicationScoped öffentliche Klasse ReactiveFruitService {@Inject ReactiveMongoClient mongoClient public CompletionStage list () {return getCollection (). find (). map (doc -> {Fruitruit = new Fruit ()ruit.setName ( doc.getString ('name') )ruit.setDescription (doc.getString ('description')) gibt Frucht zurück}). toList (). run ()} public CompletionStage add (Fruchtfrucht) {Document document = new Document () .append ('name', obst.getName ()) .append ('description', obst.getDescription ()) return getCollection (). insertOne (document)} private ReactiveMongoCollection getCollection () {return mongoClient.getDatabase ('obst') ) .getCollection ('ruit ')}} Paket org.acme.rest.json import javax.inject.Inject import javax.ws.rs. * i mport javax.ws.rs.core.MediaType import java.util.List import java.util.concurrent.CompletionStage @Path ('/ reactive_fruits') @Produces (MediaType.APPLICATION_JSON) @Consumes (MediaType.APPLICATION_JSON) public class ReactiveFruit @Inject ReactiveFruitServiceruitService @GET public CompletionStage list () {returnruitService.list ()} @POST public CompletionStage add (Obstobst) {ruitService.add (Obst) Rückgabeliste ()}}

Im obigen Beispiel verwenden wir ein reaktiver mongoDb-Client zur Erleichterung der Bildung des Frontends.

Fahren Sie mit Schritt 6 fort.

ssis Schritt für Schritt lernen

Schritt 6: Vereinfachen des MongoDb-Clients mithilfe des BSON-Codecs

Verwenden Sie dazu den folgenden Code.

Paket org.acme.rest.json.codec importieren com.mongodb.MongoClient importieren org.acme.rest.json.Fruit importieren org.bson. * importieren org.bson.codecs.Codec importieren org.bson.codecs.CollectibleCodec importieren org .bson.codecs.DecoderContext import org.bson.codecs.EncoderContext import java.util.UUID öffentliche Klasse FruitCodec implementiert CollectibleCodec {privater endgültiger Codec documentCodec public FruitCodec () {this.documentCodec = MongoClient.getDefaultCodecRegistry (MongoClient.getDefaultCodecRegistry) )} @Override public void encode (BsonWriter-Writer, Fruit Fruit, EncoderContext encoderContext) {Dokument doc = new Document () doc.put ('name', obst.getName ()) doc.put ('description', obst.getDescription ()) documentCodec.encode (writer, doc, encoderContext)} @Override public Class getEncoderClass () {return Fruit.class} @Override public Fruit generateIdIfAbsentFromDocument (Fruit document) {if (! documentHasId (document)) {document.setId ( UUID.randomUUID (). ToString ())} Dokument zurückgeben} @Override public boolean documentHasId ( Fruit document) {return document.getId ()! = Null} @Override public BsonValue getDocumentId (Fruit document) {return new BsonString (document.getId ())} @Override public Fruit decode (BsonReader reader, DecoderContext decoderContext) {Document document = documentCodec.decode (reader, decoderContext) Fruitruit = new Fruit () if (document.getString ('id')! = null) {ruit.setId (document.getString ('id')) }ruit.setName (document .getString ('name') )ruit.setDescription (document.getString ('description')) gibt Frucht zurück}}

Jetzt werden wir einen CodecProvider verwenden, um dies mit der bereits vorhandenen Fruit-Klasse zu verknüpfen.

Paket org.acme.rest.json.codec import org.acme.rest.json.Fruit importieren org.bson.codecs.Codec importieren org.bson.codecs.configuration.CodecProvider importieren org.bson.codecs.configuration.CodecRegistry öffentliche Klasse FruitCodecProvider implementiert CodecProvider {@Override public Codec get (Klassenclazz, CodecRegistry-Registrierung) {if (clazz == Fruit.class) {return (Codec) new FruitCodec ()} return null}}

Fahren Sie mit Schritt 7 fort.

Schritt 7: Endgültiger Code

Der endgültige Code für diese Anwendung sieht ungefähr so ​​aus.

Paket org.acme.rest.json importieren com.mongodb.client.MongoClient importieren com.mongodb.client.MongoCollection importieren com.mongodb.client.MongoCursor importieren javax.enterprise.context.ApplicationScoped importieren javax.inject.Inject importieren java.util .ArrayList import java.util.List @ApplicationScoped öffentliche Klasse CodecFruitService {@Inject MongoClient mongoClient public List list () {List list = new ArrayList () MongoCursor cursor = getCollection (). Find (). Iterator () try {while (cursor .hasNext ()) {list.add (cursor.next ())}} endlich {cursor.close ()} Rückgabeliste} public void add (Fruchtfrucht) {getCollection (). insertOne (Frucht)} private MongoCollection getCollection ( ) {return mongoClient.getDatabase ('Frucht'). getCollection ('Frucht', Fruit.class)}}

Fazit

Jetzt wissen Sie, wie Sie den MongoDB-Client in Ihrem System konfigurieren und verwenden. Probieren Sie diese Codes in Ihrem System aus und teilen Sie uns Ihre Erfahrungen mit.

Artikelübersicht

Erfahren Sie alles über den MongoDB-Client und wie Sie ihn in Ihrem System für verschiedene Zwecke konfigurieren können. Lesen Sie weiter, um mehr zu erfahren.

Damit kommen wir zum Ende des '' MongoDB-Client '' Artikel.