Vse, kar morate vedeti o odjemalcu MongoDB



V tem članku boste našli podrobno in celovito znanje o odjemalcu MongoDB z vsemi njegovimi lastnostmi in uporabami.

Če že nekaj časa uporabljate kakršen koli sistem upravljanja relacijske baze podatkov, ste verjetno že naleteli na ime . MongoDb, prvič predstavljen leta 2009, je danes eden najbolj priljubljenih sistemov za upravljanje relacijskih baz podatkov v industriji. Glavni razlog za njeno noro priljubljenost kljub prisotnosti starejših upravljavcev programske opreme za relacijske baze podatkov, kot je MySql, je na trgu številnost in velika vsestranskost, ki jo prinaša na mizo. Uporaba MongoDB odpravlja številne potrebe, med njimi tudi potrebo po ustvarjanju baze podatkov in določanju podatkovnega tipa ob vsakem zagonu novega projekta. Dnevni red odjemalskega članka MongoDB:





Da pa bi iz MongoDB dosegli največjo funkcionalnost, moramo poznati odjemalca MongoDB in v tem članku bomo razpravljali ravno o tem.

Predpogoji za odjemalca MongoDB

Če želite, da je ta članek v celoti, morate najprej izpolniti naslednje pogoje.



IDE naj bo že prisoten v vašem sistemu.
Java Development Kit ali JDK različice 1.8 in novejše, nameščene s pravilno konfiguriranim JAVA_HOME.
Nameščen Docker ali MongoDB.
Apache Maven različice 3.5.3 in novejše.

Arhitektura, ki smo jo ustvarili in uporabili v tem priročniku, je ena najpreprostejših. Po izvedbi lahko uporabnik enostavno doda podatke in elemente na seznam, nato pa se samodejno posodobi v zbirko podatkov.

Logotip odjemalca MongoDB



funkcija razvrščanja c ++

Skupaj s tem smo poskrbeli, da je vsa komunikacija med podatki in strežnikom v JSON in da so vsi podatki shranjeni v MongoDB.

Kako začeti

Če želite začeti s tem projektom, sledite spodnjim korakom.

1. korak: Ustvarjanje projekta na Mavenu

Prvi korak je vedno ustvariti nov projekt in za to uporabiti naslednjo kodo.

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

Ko zaženete zgornji ukaz, bo IDE v vaš sistem uvozil odjemalce JSON-B, MongoDb in RESTEasy / JAX-RS.

Nadaljujemo z 2. korakom.

2. korak: Dodajanje prve storitve počitka JSON

Če želite to narediti, uporabite spodnjo kodo. paket org.acme.rest.json import java.util.Objects javni razred Sadje {ime zasebnega niza zasebno Opis niza javno Sadje () {} javno sadje (ime niza, opis niza) {this.name = ime this.description = opis } javni niz getName () {return ime} javna praznina setName (ime niza) {this.name = name} javni niz getDescription () {return description} javna void setDescription (opis niza) {this.description = description} @Override public logična vrednost je enaka (Object obj) {if (! (obj instanceof Fruit)) {return false} Sadje drugo = (Sadje) obj return Objects.equals (other.name, this.name)} @Override public int hashCode () {return Objects.hash (to.ime)}}

Z zgornjim primerom smo najprej ustvarili Sadje, ki bo kasneje uporabljeno v programu.

Nato moramo ustvariti datoteko org.acme.rest.json.FruitService, ki bo uporabniška plast naše aplikacije. Če želite to narediti, uporabite spodnjo kodo.

paket 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.inje .Inject import java.util.ArrayList import java.util.List @ApplicationScoped javni razred FruitService {@Inject MongoClient mongoClient public List list () {List list = new ArrayList () MongoCursor cursor = getCollection (). Find (). Iterator (). ) poskusite {while (cursor.hasNext ()) {Document document = cursor.next () Sadje sadje = novo Sadje () sadje.setName (document.getString ('ime')) fruit.setDescription (document.getString ('opis ')) list.add (sadje)}} nazadnje {cursor.close ()} vrni seznam} javni void add (Sadje sadja) {Dokument dokumenta = nov dokument () .append (' ime ', sadje.getName ()) .append ('description', fruit.getDescription ()) getCollection (). insertOne (document)} private MongoCollection getCollection () {return mongoClient.getDatabase ('sadje'). getCol lection ('sadje')}} Zdaj moramo urediti razred org.acme.rest.json.FruitResource, da bo ustrezal našim potrebam. Če želite to narediti, uporabite spodnjo kodo. @Path ('/ sadje') @Produces (MediaType.APPLICATION_JSON) @Consumes (MediaType.APPLICATION_JSON) javni razred FruitResource {@Inject FruitService fruitService @GET javni seznam seznamov () {return fruitService.list ()} @POST javni seznam add (Sadno sadje) {fruitService.add (sadje) seznam vrnitev ()}}

Nadaljujemo s 3. korakom.

3. korak: Konfiguriranje baze podatkov mongoDb

Sintaksa in standardna koda za konfiguriranje baze podatkov mongoDb je navedena spodaj.

# konfigurirajte odjemalca mongoDB za nabor replik dveh vozlišč quarkus.mongodb.connection-string = mongodb: // mongo1: 27017, mongo2: 27017

V našem primeru bomo za konfiguracijo baze podatkov uporabili naslednjo kodo.

# konfigurirajte odjemalca mongoDB za nabor replik dveh vozlišč quarkus.mongodb.connection-string = mongodb: // localhost: 27017

Nadaljujemo s 4. korakom.

4. korak: Zagon konfigurirane baze podatkov MongoDB

Naslednji korak je zagon baze podatkov MongoDB, ki smo jo pravkar ustvarili. Če želite to narediti, uporabite spodnjo kodo.

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

Nadaljujemo s 5. korakom.

5. korak: Izdelava sprednjega dela

Zdaj, ko je vse delo na zaledju aplikacije končano, si oglejmo kodo, ki se uporablja za kodiranje prednjega dela naše aplikacije.

paket 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.L import java.util.concurrent.CompletionStage @ApplicationScoped javni razred ReactiveFruitService {@Inject ReactiveMongoClient mongoClient public CompletionStage list () {return getCollection (). find (). map (doc -> {Sadje sadje = novo Sadje () sadja.setName ( doc.getString ('name')) fruit.setDescription (doc.getString ('description')) return fruit}). toList (). run ()} public CompletionStage add (Sadno sadje) {Document document = new Document () .append ('name', fruit.getName ()) .append ('description', fruit.getDescription ()) return getCollection (). insertOne (document)} private ReactiveMongoCollection getCollection () {return mongoClient.getDatabase ('sadje' ) .getCollection ('sadje')}} 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) javni razred ReactiveFruitR @Inject ReactiveFruitService fruitService @GET public CompletionStage list () {return fruitService.list ()} @POST public CompletionStage add (Sadno sadje) {fruitService.add (sadje) povratni seznam ()}}

V zgornjem primeru uporabljamo reaktivni odjemalec mongoDb za lažje oblikovanje sprednjega dela.

Nadaljujemo s 6. korakom.

6. korak: Poenostavitev odjemalca mongoDb z uporabo kodeka BSON

Če želite to narediti, uporabite spodnjo kodo.

paket 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 javni razred FruitCodec izvaja CollectibleCodec {zasebni končni Codec documentCodec public FruitCodec () {this.documentCodec = MongoClient.getDefaultCode. )} @Override javno prazno kodiranje (zapisovalnik BsonWriter, Fruit fruit, EncoderContext encoderContext) {Document doc = nov dokument () doc.put ('name', fruit.getName ()) doc.put ('description', fruit.getDescription ()) documentCodec.encode (zapisovalnik, doc, encoderContext)} @Override javni razred getEncoderClass () {return Fruit.class} @Override public Fruit generirajIdIfAbsentFromDocument (Sadni dokument) {if (! documentHasId (dokument)) {document.setId (document) UUID.randomUUID (). ToString ())} vrnitev dokumenta} @Override public boolean documentHasId ( Sadni dokument) {return document.getId ()! = Null} @Override public BsonValue getDocumentId (Fruit document) {return new BsonString (document.getId ())} @ Override public Fruit decode (BsonReader čitalec, DecoderContext decoderContext) {Document document document = documentCodec.decode (čitalnik, decoderContext) Sadje sadje = novo Sadje (), če (document.getString ('id')! = null) {fruit.setId (document.getString ('id'))} fruit.setName (dokument .getString ('name')) fruit.setDescription (document.getString ('description')) return sadje}}

Zdaj bomo uporabili CodecProvider, da to povežemo z že prisotnim razredom Sadje.

paket 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 javni razred FruitCodecProvider izvaja CodecProvider {@Override public Codec get (Class clazz, register CodecRegistry) {if (clazz == Fruit.class) {return (Codec) new FruitCodec ()} return null}}

Nadaljujemo s 7. korakom.

7. korak: Končna koda

Končna koda za to aplikacijo bo videti približno tako.

paket 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.Injetilct import java.unjectu .ArrayList import java.util.List @ApplicationScoped javni razred CodecFruitService {@Inject MongoClient mongoClient public List list () {List list = new ArrayList () MongoCursor cursor = getCollection (). Find (). Iterator () try {while (cursor) .hasNext ()) {list.add (cursor.next ())}} nazadnje {cursor.close ()} return list} javni void add (Sadje sadje) {getCollection (). insertOne (sadje)} private MongoCollection getCollection ( ) {return mongoClient.getDatabase ('sadje'). getCollection ('sadje', Fruit.class)}}

Zaključek

Zdaj veste, kako konfigurirati in uporabljati odjemalca MongoDB v vašem sistemu. Poizkusite te kode v svojem sistemu in nam sporočite svoje izkušnje.

Povzetek članka

Izvedite vse o odjemalcu MongoDB in kako ga lahko v svojem sistemu konfigurirate za različne namene. Preberite, če želite izvedeti več.

S tem smo prišli do konca ' Naročnik MongoDB ' Članek.