Tot ce trebuie să știți despre clientul MongoDB



Acest articol vă va oferi o cunoaștere detaliată și cuprinzătoare a clientului MongoDB cu toate caracteristicile și utilizările sale.

Dacă ați fost orice formă de sistem de gestionare a bazelor de date relaționale de ceva timp, probabil că ați dat peste numele . Introdus pentru prima dată în anul 2009, astăzi mongoDb este unul dintre cele mai populare sisteme de gestionare a bazelor de date relaționale din industrie. Principalul motiv din spatele popularității sale nebunești, în ciuda prezenței managerilor de software de baze de date relaționale mai vechi, precum MySql, prezenți pe piață, este numărul mare și versatilitatea mare pe care o aduce la masă. Utilizarea MongoDB elimină multe nevoi, una dintre ele fiind necesitatea de a crea o bază de date și definirea tipului de date de fiecare dată când este inițiat un nou proiect. Agenda articolului clientului MongoDB:





Dar pentru a obține funcționalitatea maximă din MongoDB, trebuie să vă familiarizați cu clientul MongoDB și, în acest articol, vom discuta exact acest lucru.

Cerințe preliminare pentru clientul MongoDB

Pentru ca acest articol să fie complet, va trebui să îndepliniți mai întâi următoarele condiții prealabile.



Aveți deja un IDE prezent în sistemul dvs.
Java Development Kit sau JDK versiunea 1.8 și mai sus instalat cu JAVA_HOME configurat corect.
Docker sau MongoDB instalat.
Apache Maven versiunea 3.5.3 și mai sus.

cum se setează classpath în java

Arhitectura pe care am creat-o și am folosit-o în acest ghid este una dintre cele mai simple. Când este executat, utilizatorul poate adăuga cu ușurință date și elemente într-o listă, după care va fi actualizat automat în baza de date.

Logo-ul clientului MongoDB



Odată cu aceasta, ne-am asigurat că toată comunicația dintre date și server este în JSON și toate datele sunt stocate în MongoDB.

Noțiuni de bază

Pentru a începe cu acest proiect, urmați pașii descriși mai jos.

Pasul 1: Crearea proiectului pe Maven

Primul pas este întotdeauna să creați un proiect nou și, pentru a face acest lucru, utilizați următorul cod.

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

Când executați comanda de mai sus, IDE va ​​importa în sistemul dvs. clienții JSON-B, MongoDb, precum și RESTEasy / JAX-RS.

Continuând cu Pasul 2.

Pasul 2: Adăugarea primului serviciu de odihnă JSON

Pentru a face acest lucru, utilizați codul de mai jos. pachet org.acme.rest.json import java.util.Objects public class Fruit {private String name private String description public Fruit () {} public Fruit (String name, String description) {this.name = nume 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 egal (Obiect obiect) {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)}}

Cu exemplul de mai sus, am creat mai întâi Fruit, care va fi folosit ulterior în program.

În continuare trebuie să creăm fișierul org.acme.rest.json.FruitService care va fi stratul de utilizator al aplicației noastre. Pentru a face acest lucru, utilizați codul de mai jos.

pachet org.acme.rest.json import com.mongodb.client.MongoClient import com.mongodb.client.MongoCollection import com.mongodb.client.MongoCursor import org.bson.Document import javax.enterprise.context.ApplicationScoped import javax.inject .Inject import java.util.ArrayList import java.util.List @ApplicationScoped public class FruitService {@Inject MongoClient mongoClient public List list () {List list = new ArrayList () MongoCursor cursor = getCollection (). Find (). Iterator ( ) Încercați {while (cursor.hasNext ()) {Document document = cursor.next () Fruit fruit = new Fruit () fruit.setName (document.getString ('nume')) fruit.setDescription (document.getString ('description ')) list.add (fruit)}} în cele din urmă {cursor.close ()} return list} public void add (Fruit fruit) {Document document = Document nou () .append (' nume ', fruit.getName ()) .append ('description', fruit.getDescription ()) getCollection (). insertOne (document)} private MongoCollection getCollection () {return mongoClient.getDatabase ('fruit'). getCol lection ('fruit')}} Acum trebuie să modificăm clasa org.acme.rest.json.FruitResource pentru a se potrivi nevoilor noastre. Pentru a face acest lucru, utilizați codul de mai jos. @Path ('/ fruits') @Produces (MediaType.APPLICATION_JSON) @Consumes (MediaType.APPLICATION_JSON) clasă publică FruitResource {@Inject FruitService fruitService @GET public List list () {return fruitService.list ()} @POST public List add (Fruit fruit) {fruitService.add (fruit) listă de returnare ()}}

Continuând cu Pasul 3.

Pasul 3: Configurarea bazei de date mongoDb

Sintaxa, precum și codul standard pentru configurarea bazei de date mongoDb sunt cele prezentate mai jos.

# configurați clientul mongoDB pentru un set de replici de două noduri quarkus.mongodb.connection-string = mongodb: // mongo1: 27017, mongo2: 27017

În cazul nostru, vom folosi următorul cod pentru a configura baza de date.

# configurați clientul mongoDB pentru un set de replici de două noduri quarkus.mongodb.connection-string = mongodb: // localhost: 27017

Continuând cu Pasul 4.

Pasul 4: Rularea bazei de date MongoDB configurată

Următorul pas este să rulăm baza de date MongoDB pe care tocmai am creat-o. Pentru a face acest lucru, utilizați codul de mai jos.

docker run -ti --rm -p 27017: 27017 mongo: 4.0

Continuând cu Pasul 5.

Pasul 5: Realizarea frontului

Acum că toate lucrările din backend-ul aplicației sunt terminate, haideți să aruncăm o privire asupra codului folosit pentru a codifica partea frontală a aplicației noastre.

package org.acme.rest.json import io.quarkus.mongodb.ReactiveMongoClient import io.quarkus.mongodb.ReactiveMongoCollection import org.bson.Document import javax.enterprise.context.ApplicationScoped import javax.inject.Inject import java.util.List import java.util.concurrent.CompletionStage @ApplicationScoped public class ReactiveFruitService {@Inject ReactiveMongoClient mongoClient public CompletionStage list () {return getCollection (). find (). map (doc -> {Fruit fruit = new Fruit () fruit.setName ( doc.getString ('name')) fruit.setDescription (doc.getString ('description')) return fruit}). toList (). run ()} public CompletionStage add (Fruit fruit) {Document document = document nou () .append ('name', fruit.getName ()) .append ('description', fruit.getDescription ()) return getCollection (). insertOne (document)} private ReactiveMongoCollection getCollection () {return mongoClient.getDatabase ('fruit' ) .getCollection ('fructe')}} pachet 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 ReactiveFace @Inject ReactiveFruitService fruitService @GET public CompletionStage list () {return fruitService.list ()} @POST public CompletionStage add (Fruit fruit) {fruitService.add (fruit) list return ()}}

În exemplul de mai sus, folosim un client reactiv mongoDb pentru a facilita formarea front-end-ului.

Continuând cu Pasul 6.

Pasul 6: Simplificarea clientului mongoDb folosind codec BSON

Pentru a face acest lucru, utilizați codul de mai jos.

pachet org.acme.rest.json.codec import com.mongodb.MongoClient import org.acme.rest.json.Fruit import org.bson. * import org.bson.codecs.Codec import org.bson.codecs.CollectibleCodec import org .bson.codecs.DecoderContext import org.bson.codecs.EncoderContext import java.util.UUID public class FruitCodec implements CollectibleCodec {private final Codec documentCodec public FruitCodec () {this.documentCodec = MongoClient.getDefaultCodecRegistry (). )} @Override public void encode (BsonWriter writer, Fruit fruit, EncoderContext encoderContext) {Document doc = new Document () doc.put ('name', fruit.getName ()) doc.put ('description', fruit.getDescription ()) documentCodec.encode (writer, doc, encoderContext)} @Override public Class getEncoderClass () {return Fruit.class} @Override public Fruit generateIdIfAbsentFromDocument (documentul Fruit) {if (! documentHasId (document)) {document.setId ( UUID.randomUUID (). ToString ())} return document} @Override public boolean documentHasId ( Fruit document) {return document.getId ()! = Null} @Override public BsonValue getDocumentId (document Fruit) {return new BsonString (document.getId ())} @Override public Fruit decode (BsonReader reader, DecoderContext decoderContext) {Document document = documentCodec.decode (reader, decoderContext) Fruit fruit = new Fruit () if (document.getString ('id')! = nul) {fruit.setId (document.getString ('id'))} fruit.setName (document .getString ('nume')) fruit.setDescription (document.getString ('description')) returnează fruct}}

Acum vom folosi un CodecProvider pentru a lega acest lucru de clasa Fruit deja prezentă.

pachet org.acme.rest.json.codec import org.acme.rest.json.Fruit import org.bson.codecs.Codec import org.bson.codecs.configuration.CodecProvider import org.bson.codecs.configuration.CodecRegistry public class FruitCodecProvider implementează CodecProvider {@Override public Codec get (Class clazz, CodecRegistry registry) {if (clazz == Fruit.class) {return (Codec) new FruitCodec ()} return null}}

Continuând cu Pasul 7.

Pasul 7: Cod final

Codul final pentru această aplicație va arăta cam așa.

tutorial mvc de primăvară pentru începători
pachetul org.acme.rest.json import com.mongodb.client.MongoClient import com.mongodb.client.MongoCollection import com.mongodb.client.MongoCursor import javax.enterprise.context.ApplicationScoped import javax.inject.Inject import java.util .ArrayList import java.util.List @ApplicationScoped public class CodecFruitService {@Inject MongoClient mongoClient public List list () {List list = new ArrayList () MongoCursor cursor = getCollection (). Find (). Iterator () try {while (cursor .hasNext ()) {list.add (cursor.next ())}} în cele din urmă {cursor.close ()} return list} public void add (Fruit fruit) {getCollection (). insertOne (fruit)} private MongoCollection getCollection ( ) {return mongoClient.getDatabase ('fruit'). getCollection ('fruit', Fruit.class)}}

Concluzie

Acum știți cum să configurați și să utilizați clientul MongoDB în sistemul dvs. Continuați și încercați aceste coduri în sistemul dvs. și anunțați-ne experiența.

Rezumatul articolului

Aflați totul despre clientul MongoDB și cum puteți configura același lucru în sistemul dvs. pentru diferite utilizări. Citiți mai departe pentru a afla mai multe.

Cu aceasta, ajungem la sfârșitul anului ' Client MongoDB ' articol.