Tot el que heu de saber sobre el client MongoDB



Aquest article us proporcionarà un coneixement detallat i complet del client MongoDB amb totes les seves funcions i usos.

Si heu estat algun tipus de sistema de gestió de bases de dades relacionals des de fa temps, probablement us hagueu trobat amb el nom de . Presentat per primera vegada l'any 2009, avui mongoDb és un dels sistemes de gestió de bases de dades relacionals més populars de la indústria. El principal motiu de la seva insana popularitat malgrat la presència de gestors de programari de bases de dades relacionals antigues com MySql presents al mercat és la gran quantitat de números i la gran versatilitat que presenta. L’ús de MongoDB elimina moltes necessitats, una d’elles és la necessitat de crear una base de dades i definir el tipus de dades cada vegada que s’inicia un nou projecte. Agenda de l'article del client MongoDB:





Però per aconseguir la màxima funcionalitat de MongoDB, cal conèixer el client MongoDB i en aquest article en parlarem exactament.

Requisits previs per al client MongoDB

Per tal que aquest article sigui complet, primer haurà de complir els requisits previs següents.



Teniu un IDE ja present al vostre sistema.
Java Development Kit o JDK versió 1.8 i superior instal·lat amb JAVA_HOME configurat correctament.
Instal·lat Docker o MongoDB.
Apache Maven versió 3.5.3 i posteriors.

com establir classpath a Java

L’arquitectura que hem creat i utilitzat en aquesta guia és una de les més senzilles. Quan s’executa, l’usuari pot afegir fàcilment dades i elements en una llista, i després s’actualitzarà automàticament a la base de dades.

Logotip del client MongoDB



Juntament amb això, ens hem assegurat que tota la comunicació entre les dades i el servidor es troba en JSON i que totes les dades s’emmagatzemen a MongoDB.

Començant

Per començar amb aquest projecte, seguiu els passos que es descriuen a continuació.

Pas 1: crear el projecte a Maven

El primer pas sempre és crear un projecte nou i, per fer-ho, feu servir el codi següent.

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 '

Quan executeu l'ordre anterior, l'IDE importarà al vostre sistema els clients JSON-B, MongoDb i RESTEasy / JAX-RS.

Continuant amb el pas 2.

Pas 2: afegiu el vostre primer servei de descans JSON

Per fer-ho, utilitzeu el codi següent. paquet 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 = nom this.description = descripció } 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 booleà és igual (Object object) {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)}}

Amb l'exemple anterior, primer hem creat el Fruit que posteriorment s'utilitzarà al programa.

A continuació, hem de crear el fitxer org.acme.rest.json.FruitService, que serà la capa d'usuari de la nostra aplicació. Per fer-ho, utilitzeu el codi següent.

paquet 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 ( ) try {while (cursor.hasNext ()) {Document document = cursor.next () Fruit fruit = new Fruit () fruit.setName (document.getString ('name')) fruit.setDescription (document.getString ('description ')) list.add (fruit)}} finalment {cursor.close ()} return list} public void add (Fruit fruit) {Document document = Document nou () .append (' nom ', fruit.getName ()) .append ('description', fruit.getDescription ()) getCollection (). insertOne (document)} private MongoCollection getCollection () {return mongoClient.getDatabase ('fruit'). getCol lection ('fruit')}}} Ara hem d'editar la classe org.acme.rest.json.FruitResource perquè s'adapti a les nostres necessitats. Per fer-ho, utilitzeu el codi següent. @Path ('/ fruits') @Produces (MediaType.APPLICATION_JSON) @Consumes (MediaType.APPLICATION_JSON) classe pública FruitResource {@Inject FruitService fruitService @GET public List list () {return fruitService.list ()} @POST Public add list (Fruit fruit) {fruitService.add (fruit) llista de retorn ()}}

Continuant amb el pas 3.

Pas 3: Configuració de la base de dades mongoDb

La sintaxi i el codi estàndard per configurar la base de dades mongoDb són els següents.

# configureu el client mongoDB per a un conjunt de rèpliques de dos nodes quarkus.mongodb.connection-string = mongodb: // mongo1: 27017, mongo2: 27017

En el nostre cas, utilitzarem el següent codi per configurar la base de dades.

# configureu el client mongoDB per a un conjunt de rèpliques de dos nodes quarkus.mongodb.connection-string = mongodb: // localhost: 27017

Continuant amb el pas 4.

Pas 4: executar la base de dades MongoDB configurada

El següent pas és executar la base de dades MongoDB que acabem de crear. Per fer-ho, utilitzeu el codi següent.

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

Continuant amb el pas 5.

Pas 5: fer la part frontal

Ara que s'ha acabat tot el treball al fons de l'aplicació, donem una ullada al codi utilitzat per codificar la part frontal de la nostra aplicació.

paquet org.acme.rest.json importació io.quarkus.mongodb.ReactiveMongoClient importació 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 = new Document () .append ('name', fruit.getName ()) .append ('description', fruit.getDescription ()) return getCollection (). insertOne (document)} private ReactiveMongoCollection getCollection () {return mongoClient.getDatabase ('fruit') ) .getCollection ('fruit')}} paquet 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 public ReactiveFactures @Inject ReactiveFruitService fruitService @GET public CompletionStage list () {return fruitService.list ()} @POST public CompletionStage add (Fruit fruit) {fruitService.add (fruit) llista de retorn ()}}

A l'exemple anterior, estem fent ús de un client mongoDb reactiu per facilitar la formació de la part frontal.

Continuant amb el pas 6.

Pas 6: Simplificació del client mongoDb mitjançant el còdec BSON

Per fer-ho, utilitzeu el codi següent.

paquet 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 (document Fruit) {if (! documentHasId (document)) {document.setId ( UUID.randomUUID (). ToString ())} return document} @Override document booleà públicHasId ( 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 (lector, decoderContext) Fruit fruit = Fruit nou () if (document.getString ('id')! = nul) {fruit.setId (document.getString ('id'))} fruit.setName (document .getString ('nom')) fruit.setDescription (document.getString ('descripció')) retorna fruit}}

Ara farem ús d’un CodecProvider per enllaçar-ho amb la classe Fruit ja present.

paquet 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 implementa CodecProvider {@Override public Codec get (Class clazz, registre CodecRegistry) {if (clazz == Fruit.class) {return (Codec) new FruitCodec ()} return null}}

Continuant amb el pas 7.

Pas 7: Codi final

El codi final d'aquesta aplicació tindrà un aspecte semblant.

sal vs xef contra titella
paquet 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 ())}} finalment {cursor.close ()} llista de retorn} public void add (Fruit fruit) {getCollection (). insertOne (fruit)} private MongoCollection getCollection ( ) {return mongoClient.getDatabase ('fruit'). getCollection ('fruit', Fruit.class)}}

Conclusió

Ara ja sabeu com configurar i utilitzar el client MongoDB al vostre sistema. Seguiu endavant i proveu aquests codis al vostre sistema i feu-nos saber la vostra experiència.

Resum de l'article

Obteniu més informació sobre el client MongoDB i sobre com podeu configurar-lo al vostre sistema per a diversos usos. Seguiu llegint per obtenir més informació.

Amb això, arribem al final del ' Client de MongoDB ' article.