Viss, kas jums jāzina par MongoDB klientu

Šis raksts sniegs jums detalizētas un visaptverošas zināšanas par MongoDB klientu ar visām tā funkcijām un lietojumiem.

Ja kādu laiku esat bijis jebkāda veida relāciju datu bāzes pārvaldības sistēma, iespējams, esat saskāries ar . Pirmo reizi ieviesta 2009. gadā, šodien mongoDb ir viena no populārākajām relāciju datu bāzu pārvaldības sistēmām nozarē. Neskatoties uz nenormālo popularitāti, neraugoties uz tirgū esošo vecāko relāciju datu bāzes programmatūras pārvaldnieku, piemēram, MySql, klātbūtni, iemesls ir plašais skaits un lieliskā daudzpusība, ko tas rada galdā. MongoDB izmantošana novērš daudzas vajadzības, viena no tām ir nepieciešamība izveidot datu bāzi un datu veida noteikšana katru reizi, kad tiek uzsākts jauns projekts. MongoDB klienta raksta darba kārtība:





Bet, lai sasniegtu MongoDB maksimālu funkcionalitāti, ir jāpārzina MongoDB klients, un šajā rakstā mēs to apspriedīsim.

Priekšnosacījumi MongoDB klientam

Lai pilnībā sagatavotu šo rakstu, vispirms jums būs jāizpilda šādi priekšnosacījumi.



Vai IDE jau ir jūsu sistēmā.
Java Development Kit vai JDK 1.8 un jaunāka versija, kas instalēta pareizi JAVA_HOME.
Instalēts dokeris vai MongoDB.
Apache Maven versija 3.5.3 un jaunāka.

Arhitektūra, kuru esam izveidojuši un izmantojuši šajā rokasgrāmatā, ir viena no vienkāršākajām. Pēc izpildes lietotājs var viegli pievienot datus un elementus sarakstā, pēc tam tas automātiski tiks atjaunināts datu bāzē.

MongoDB klienta logotips



Līdz ar to mēs esam pārliecinājušies, ka visa komunikācija starp datiem un serveri ir JSON un visi dati tiek glabāti MongoDB.

Darba sākšana

Lai sāktu darbu ar šo projektu, veiciet tālāk norādītās darbības.

1. solis: projekta izveide Maven

Pirmais solis vienmēr ir jauna projekta izveide un, lai to izdarītu, izmantojiet šādu kodu.

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

Palaidot iepriekš minēto komandu, IDE importēs jūsu sistēmā JSON-B, MongoDb, kā arī RESTEasy / JAX-RS klientus.

Turpinot 2. darbību.

goto paziņojums c ++

2. solis: Pievienojiet savu pirmo JSON atpūtas pakalpojumu

Lai to izdarītu, izmantojiet zemāk esošo kodu. pakete org.acme.rest.json importēt 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 (String description) {this.description = description} @Override public būla vērtība ir vienāda (Object obj) {if (! (augļa obj instance)) {return false} Augļi citi = (Fruit) obj return Objects.equals (other.name, this.name)} @ Pārvarēt publisko int hashCode () {return Objekti.hash (šis.nosaukums)}}

Izmantojot iepriekš minēto piemēru, mēs vispirms esam izveidojuši augļus, kurus vēlāk izmantos programmā.

Tālāk mums jāizveido fails org.acme.rest.json.FruitService, kas būs mūsu lietojumprogrammas lietotāja slānis. Lai to izdarītu, izmantojiet zemāk esošo kodu.

pakete org.acme.rest.json importēt com.mongodb.client.MongoClient importēt com.mongodb.client.MongoCollection importēt com.mongodb.client.MongoCursor importēt org.bson.Document importēt javax.enterprise.context.ApplicationScoped import javax.in .Inject importēt java.util.ArrayList importēt java.util.List @ApplicationScoped publisko klasi FruitService {@Inject MongoClient mongoClient public List list () {List list = new ArrayList () MongoCursor cursor = getCollection (). Find (). Iterator ( ) mēģiniet {while (cursor.hasNext ()) {Dokumenta dokuments = cursor.next () Augļu augļi = new Augļi () fruit.setName (document.getString ('nosaukums')) fruit.setDescription (document.getString ('apraksts ')) list.add (fruit)}} visbeidzot {cursor.close ()} return list} public void add (Augļu augļi) {Document document = new Document () .append (' name ', fruit.getName ()) .append ('apraksts', fruit.getDescription ()) getCollection (). insertOne (dokuments)} privāts MongoCollection getCollection () {return mongoClient.getDatabase ('auglis'). getCol lection ('fruit')}} Tagad mums ir jārediģē org.acme.rest.json.FruitResource klase, lai tā atbilstu mūsu vajadzībām. Lai to izdarītu, izmantojiet zemāk esošo kodu. @Path ('/ fruits') @Produces (MediaType.APPLICATION_JSON) @Consumes (MediaType.APPLICATION_JSON) publiskā klase FruitResource {@Inject FruitService fruitService @GET public List list () {return fruitService.list ()} @POST public List add (Augļu augļi) {fruitService.add (augļi) atgriešanās saraksts ()}}

Turpinot 3. darbību.

3. solis: MongoDb datu bāzes konfigurēšana

Sintakse, kā arī standarta kods mongoDb datu bāzes konfigurēšanai ir norādīts zemāk.

# konfigurēt mongoDB klientu divu mezglu kopijas kopijai quarkus.mongodb.connection-string = mongodb: // mongo1: 27017, mongo2: 27017

Mūsu gadījumā datu bāzes konfigurēšanai mēs izmantosim šādu kodu.

# konfigurēt mongoDB klientu divu mezglu kopiju kopai quarkus.mongodb.connection-string = mongodb: // localhost: 27017

Turpinot 4. darbību.

4. solis: Konfigurētās MongoDB datu bāzes palaišana

Nākamais solis ir palaist tikko izveidoto MongoDB datu bāzi. Lai to izdarītu, izmantojiet zemāk esošo kodu.

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

Pāreja ar 5. darbību.

5. solis: Priekšējā gala izveidošana

Tagad, kad viss darbs lietojumprogrammas aizmugurē ir paveikts, apskatīsim kodu, kas izmantots mūsu lietojumprogrammas priekšējās daļas kodēšanai.

pakete org.acme.rest.json importēt io.quarkus.mongodb.ReactiveMongoClient importēt io.quarkus.mongodb.ReactiveMongoCollection importēt org.bson.Document importēt javax.enterprise.context.ApplicationScoped importēt javax.inject.Inject import java.ut importēt 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) {Dokumenta dokuments = jauns dokuments () .append ('name', fruit.getName ()) .append ('description', fruit.getDescription ()) return getCollection (). insertOne (document)} private ReactiveMongoCollection getCollection () {return mongoClient.getDatabase ('fruit' ) .getCollection ('fruit')}} pakete org.acme.rest.json importēt javax.inject.Inject importēt 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) @Cumsumes (MediaType.APPLICATION_JSON) public @Inject ReactiveFruitService fruitService @GET public CompletionStage list () {return fruitService.list ()} @POST public CompletionStage add (Fruit fruit) {fruitService.add (fruit) return list ()}}

Iepriekš minētajā piemērā mēs izmantojam reaktīvs mongoDb klients, lai atvieglotu priekšējā gala veidošanos.

Turpinot 6. darbību.

6. solis: MongoDb klienta vienkāršošana, izmantojot BSON kodeku

Lai to izdarītu, izmantojiet zemāk esošo kodu.

pakete org.acme.rest.json.codec importēt com.mongodb.MongoClient importēt org.acme.rest.json.Fruit import org.bson. * importēt org.bson.codecs.Codec importēt org.bson.codecs.CollectibleCodec importēt org .bson.codecs.DecoderContext import org.bson.codecs.EncoderContext importēt java.util.UUID publisko klasi FruitCodec īsteno CollectibleCodec {private final Codec documentCodec public FruitCodec () {this.documentCodec = MongoClient.getDefault (getDefault )} @Orride public void encode (BsonWriter rakstītājs, Fruit fruit, EncoderContext encoderContext) {Document doc = jauns dokuments () doc.put ('nosaukums', fruit.getName ()) doc.put ('apraksts', fruit.getDescription ()) documentCodec.encode (rakstnieks, doc, encoderContext)} @ Pārvarēt publisko klasi getEncoderClass () {return Fruit.class} @ Pārvarēt publisko augli generētIdIfAbsentFromDocument (Augļu dokuments) {if (! documentHasId (dokuments)) {document.setId ( UUID.randomUUID (). ToString ())} atgriež dokumentu} @ Pārvarēt publisko Būla dokumentuHasId ( Augļu dokuments) {return document.getId ()! = Null} @ Pārvarēt publisko BsonValue getDocumentId (Augļu dokuments) {atgriezt jaunu BsonString (document.getId ())} @ Pārvarēt publisko augļu dekodēšanu (BsonReader lasītājs, DecoderContext decoderContext) {Dokumenta dokuments = documentCodec.decode (lasītājs, decoderContext) Augļu augļi = new Fruit () if (document.getString ('id')! = null) {fruit.setId (document.getString ('id'))} fruit.setName (dokuments .getString ('nosaukums')) fruit.setDescription (document.getString ('apraksts')) atgriež augļus}}

Tagad mēs izmantosim CodecProvider, lai to saistītu ar jau esošo Fruit klasi.

pakete 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 publiskā klase FruitCodecProvider ievieš CodecProvider {@Override public Codec get (Class clazz, CodecRegistry register) {if (clazz == Fruit.class) {return (Codec) new FruitCodec ()} return null}}

Turpinot 7. darbību.

7. solis: Galīgais kods

Šīs programmas galīgais kods izskatīsies apmēram šādi.

pakete org.acme.rest.json importēt com.mongodb.client.MongoClient importēt com.mongodb.client.MongoCollection importēt com.mongodb.client.MongoCursor importēt javax.enterprise.context.ApplicationScoped importēt javax.inject.Inject importēt java.util .ArrayList importēt java.util.List @ApplicationScoped publiskā klase CodecFruitService {@Inject MongoClient mongoClient public List list () {List list = new ArrayList () MongoCursor cursor = getCollection (). Find (). Iterator () try {while (cur .hasNext ()) {list.add (cursor.next ())}} visbeidzot {cursor.close ()} return list} public void add (Augļu augļi) {getCollection (). insertOne (augļi)} privātie MongoCollection getCollection ( ) {return mongoClient.getDatabase ('fruit'). getCollection ('fruit', Fruit.class)}}

Secinājums

Tagad jūs zināt, kā konfigurēt un izmantot MongoDB klientu savā sistēmā. Izmēģiniet šos kodus savā sistēmā un informējiet mūs par savu pieredzi.

Raksta kopsavilkums

Uzziniet visu par MongoDB klientu un to, kā to pašu konfigurēt savā sistēmā dažādiem lietojumiem. Lasiet tālāk, lai uzzinātu vairāk.

Ar to mēs esam nonākuši ' MongoDB klients ' rakstu.