Kõik, mida peate teadma MongoDB kliendi kohta



See artikkel annab teile üksikasjalikud ja põhjalikud teadmised MongoDB kliendist koos kõigi selle funktsioonide ja kasutusaladega.

Kui olete juba mõnda aega olnud mis tahes vormis relatsioonide andmebaaside haldussüsteem, olete tõenäoliselt kokku puutunud selle nimega . Esmakordselt kasutusele võetud 2009. aastal, on mongoDb täna tööstuse üks populaarsemaid relatsiooniliste andmebaaside haldussüsteeme. Hullumeelse populaarsuse peamine põhjus hoolimata vanemate relatsiooniliste andmebaaside tarkvarahaldurite nagu MySql olemasolust turul on laiad arvud ja suur mitmekülgsus. MongoDB kasutamine välistab paljud vajadused, üks neist on vajadus andmebaasi loomiseks ja andmetüübi määratlemine iga kord, kui uus projekt käivitatakse. MongoDB kliendiartikli päevakord:





Kuid MongoDB maksimaalse funktsionaalsuse saavutamiseks peate olema tuttav MongoDB kliendiga ja selles artiklis me arutame seda.

Eeldused MongoDB kliendi jaoks

Selle artikli täielikuks täitmiseks peate kõigepealt vastama järgmistele eeldustele.



Las IDE on teie süsteemis juba olemas.
Java Development Kit või JDK versioon 1.8 ja uuemad versioonid on installitud, kui JAVA_HOME on õigesti konfigureeritud.
Docker või MongoDB on installitud.
Apache Maveni versioon 3.5.3 ja uuemad.

Arhitektuur, mille oleme selles juhendis loonud ja kasutanud, on üks lihtsamaid. Käivitamisel saab kasutaja hõlpsalt andmeid ja elemente loendisse lisada, misjärel see värskendatakse automaatselt andmebaasis.

MongoDB kliendi logo



Koos sellega oleme veendunud, et kogu side andmete ja serveri vahel on JSON-is ja kõik andmed on salvestatud MongoDB-sse.

Alustamine

Selle projektiga alustamiseks toimige järgmiselt.

1. samm: projekti loomine Mavenis

Esimene samm on alati uue projekti loomine ja selleks kasutage järgmist koodi.

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

Kui käivitate ülaltoodud käsu, impordib IDE teie süsteemi nii JSON-B, MongoDb kui ka RESTEasy / JAX-RS kliendid.

2. sammuga edasi liikumine.

2. samm: lisage oma esimene JSON-i puhketeenus

Selleks kasutage allolevat koodi. pakett 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 = 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 (Stringi kirjeldus) {this.description = description} @Ava avalik boolean võrdub (Object obj) {if (! (puuvilja obj instance)) {return false} Puu muu = (Fruit) obj return Objects.equals (muu.nimi, see.nimi)} @Ava avalik int hashCode () {return Objects.hash (see.nimi)}}

Ülaltoodud näite abil oleme kõigepealt loonud puuvilja, mida hiljem programmis kasutatakse.

Järgmisena peame looma faili org.acme.rest.json.FruitService, mis on meie rakenduse kasutajakiht. Selleks kasutage allolevat koodi.

pakett 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.in .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 ( ) proovige {while (cursor.hasNext ()) {Dokumendi dokument = kursor.next () Puuviljad = uued puuviljad () fruit.setName (document.getString ('nimi')) fruit.setDescription (document.getString ('kirjeldus ')) list.add (fruit)}} lõpuks {cursor.close ()} return list} public void add (Fruit fruit) {Document document = new Document () .append (' nimi ', fruit.getName ()) .append ('description', fruit.getDescription ()) getCollection (). insertOne (dokument)} private MongoCollection getCollection () {return mongoClient.getDatabase ('fruit'). getCol lection ('fruit')}} Nüüd peame oma vajadustele vastava klassi org.acme.rest.json.FruitResource muutma. Selleks kasutage allolevat koodi. @Path ('/ fruits') @Produces (MediaType.APPLICATION_JSON) @Consumes (MediaType.APPLICATION_JSON) avalik klass FruitResource {@Inject FruitService fruitService @GET public List list () {return fruitService.list ()} @POST public List add (Puuviljapuu) {fruitService.add (puu) tagasiloend ()}}

3. sammuga edasi liikumine.

Samm # 3: mongoDb andmebaasi konfigureerimine

MongoDb andmebaasi konfigureerimise süntaks ja standardkood on toodud allpool.

# konfigureerige mongoDB klient kahest sõlmest koosneva koopia komplekti jaoks quarkus.mongodb.connection-string = mongodb: // mongo1: 27017, mongo2: 27017

Meie puhul kasutame andmebaasi konfigureerimiseks järgmist koodi.

# konfigureerige mongoDB klient kahest sõlmest koosneva koopia komplekti jaoks quarkus.mongodb.connection-string = mongodb: // localhost: 27017

4. sammuga edasi liikumine.

Samm # 4: konfigureeritud MongoDB andmebaasi käivitamine

Järgmine samm on meie loodud MongoDB andmebaasi käivitamine. Selleks kasutage allolevat koodi.

dokkimisjooks -ti --rm -p 27017: 27017 mongo: 4,0

5. sammuga edasi liikumine.

Samm # 5: Esiosa valmistamine

Nüüd, kui kogu töö rakenduse tagaküljel on tehtud, heitkem pilk meie rakenduse esiotsa kodeerimiseks kasutatud koodile.

pakett 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.ut 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 ('nimi')) fruit.setDescription (doc.getString ('description')) return fruit}). toList (). run ()} public CompletionStage add (Fruit fruit) {Dokumendi dokument = uus dokument () .append ('nimi', fruit.getName ()) .append ('description', fruit.getDescription ()) return getCollection (). insertOne (dokument)} private ReactiveMongoCollection getCollection () {return mongoClient.getDatabase ('puu' ) .getCollection ('fruit')}} pakett 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) publicTime @Inject ReactiveFruitService fruitService @GET public CompletionStage list () {return fruitService.list ()} @POST public CompletionStage add (Fruit fruit) {fruitService.add (fruit) return list ()}}

Ülaltoodud näites kasutame seda reaktiivne mongoDb klient, et hõlbustada esiotsa moodustumist.

6. sammuga edasi liikumine.

Samm # 6: mongoDb kliendi lihtsustamine BSON-koodeki abil

Selleks kasutage allolevat koodi.

pakett 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 avalik klass FruitCodec rakendab CollectibleCodec {private final Codec documentCodec public FruitCodec () {this.documentCodec = MongoClient.getDefault )} @Override public void encode (BsonWriteri kirjutaja, Fruit fruit, EncoderContext encoderContext) {Dokumend doc = uus dokument () doc.put ('nimi', fruit.getName ()) doc.put ('kirjeldus', fruit.getDescription ()) documentCodec.encode (kirjutaja, doc, encoderContext)} @Ava avalik klass getEncoderClass () {return Fruit.class} @Override public Fruit generatorIdIfAbsentFromDocument (puuviljadokument) {if (! documentHasId (dokument)) {document.setId ( UUID.randomUUID (). ToString ())} tagastab dokumendi} @Ava avalik tõeväärtusega dokumentHasId ( Puuviljadokument) {return document.getId ()! = Null} @ Avaliku BsonValue getDocumentId (puuviljadokument) alistamine {return uus BsonString (document.getId ())} @Override public Fruit decode (BsonReader reader, DecoderContext decoderContext) {Dokumendi dokument = documentCodec.decode (lugeja, decoderContext) Puuviljapuu = uus Fruit () if (document.getString ('id')! = null) {fruit.setId (document.getString ('id'))} fruit.setName (dokument .getString ('nimi')) fruit.setDescription (document.getString ('description')) tagastab puu}}

Nüüd linkime selle CodecProvideri abil juba olemasoleva puuviljaklassiga.

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

7. sammuga edasi liikumine.

7. samm: lõplik kood

Selle rakenduse lõplik kood näeb välja umbes selline.

pakett 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 (curs .hasNext ()) {list.add (cursor.next ())}} lõpuks {cursor.close ()} return list} public void add (Fruit fruit) {getCollection (). insertOne (fruit)} private MongoCollection getCollection ( ) {return mongoClient.getDatabase ('fruit'). getCollection ('fruit', Fruit.class)}}

Järeldus

Nüüd teate, kuidas MongoDB klienti oma süsteemis konfigureerida ja kasutada. Proovige neid koode oma süsteemis ja andke meile teada oma kogemustest.

Artikli kokkuvõte

c ++ goto joon

Lisateave MongoDB kliendi ja selle kohta, kuidas saate seda oma süsteemis erinevatel eesmärkidel konfigureerida. Lisateabe saamiseks lugege edasi.

Sellega jõuame ' MongoDB klient ' artikkel.