Kaikki mitä sinun tarvitsee tietää MongoDB Client -sovelluksesta



Tämä artikkeli antaa sinulle yksityiskohtaisen ja kattavan tiedon MongoDB Client -sovelluksesta, jossa on kaikki sen ominaisuudet ja käyttötavat.

Jos olet ollut jonkinlainen relaatiotietokantojen hallintajärjestelmä jonkin aikaa, olet todennäköisesti törmännyt käyttäjän . Ensimmäinen mongoDb otettiin käyttöön vuonna 2009, ja se on tällä hetkellä yksi alan suosituimmista relaatiotietokantojen hallintajärjestelmistä. Tärkein syy sen mielettömään suosioon huolimatta vanhempien relaatiotietokantaohjelmistojen hallintaohjelmien, kuten MySql, läsnäolosta markkinoilla on läsnä laaja valikoima ja suuri monipuolisuus. MongoDB: n käyttö eliminoi monia tarpeita, joista yksi on tarve luoda tietokanta ja määritellä tietotyyppi aina, kun uusi projekti aloitetaan. MongoDB-asiakasartikkelin esityslista:

kuinka käyttää gotoa pythonissa





Mutta MongoDB: n maksimaalisen toiminnallisuuden saavuttamiseksi MongoDB-asiakkaan on tunnettava ja keskustelemme tässä artikkelissa.

Edellytykset MongoDB Client -sovellukselle

Jotta tämä artikkeli voidaan täydellisesti täyttää, sinun on ensin täytettävä seuraavat edellytykset.



Pidä IDE jo läsnä järjestelmässäsi.
Java Development Kit- tai JDK-versio 1.8 tai uudempi asennettuna JAVA_HOME-määrityksellä oikein.
Docker tai MongoDB asennettuna.
Apache Maven -versio 3.5.3 ja uudemmat.

Tässä oppaassa luomamme ja käyttämä arkkitehtuuri on yksi yksinkertaisimmista. Suoritettuaan käyttäjä voi helposti lisätä tietoja ja elementtejä luetteloon, minkä jälkeen se päivittyy automaattisesti tietokantaan.

MongoDB-asiakaslogo



Tämän lisäksi olemme varmistaneet, että kaikki tiedon ja palvelimen välinen tiedonsiirto on JSON: ssa ja kaikki tiedot on tallennettu MongoDB: hen.

Päästä alkuun

Noudata alla olevia ohjeita aloittaaksesi tämän projektin.

Vaihe 1: Projektin luominen Maveniin

Ensimmäinen askel on aina luoda uusi projekti ja käyttää tätä varten seuraavaa koodia.

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

Kun suoritat yllä olevan komennon, IDE tuo JSON-B-, MongoDb- ja RESTEasy / JAX-RS -asiakkaat järjestelmääsi.

Siirtyminen vaiheeseen 2.

Vaihe 2: Lisää ensimmäinen JSON-lepopalvelu

Voit tehdä tämän käyttämällä alla olevaa koodia. package 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 (String description) {this.description = description} @Override public totuusarvo on yhtä suuri (Object obj) {if (! (hedelmän obj instanceof)) {return false} Hedelmä muu = (Fruit) obj return Objects.equals (other.name, this.name)} @Override public int hashCode () {return Objects.hash (tämä.nimi)}}

Yllä olevan esimerkin avulla olemme ensin luoneet hedelmän, jota käytetään myöhemmin ohjelmassa.

Seuraavaksi meidän on luotava org.acme.rest.json.FruitService-tiedosto, joka on sovelluksemme käyttäjäkerros. Voit tehdä tämän käyttämällä alla olevaa koodia.

package 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 ( ) kokeile {while (cursor.hasNext ()) {Document document = cursor.next () Fruit fruit = new Fruit () fruit.setName (document.getString ('name')) fruit.setDescription (document.getString ('description ')) list.add (fruit)}} lopuksi {cursor.close ()} return list} public void add (Fruit fruit) {Document document = new Document () .append (' name ', fruit.getName ()) .append ('description', fruit.getDescription ()) getCollection (). insertOne (asiakirja)} private MongoCollection getCollection () {return mongoClient.getDatabase ('fruit'). getCol lection ('fruit')}} Nyt meidän on muokattava org.acme.rest.json.FruitResource-luokkaa tarpeidemme mukaan. Voit tehdä tämän käyttämällä alla olevaa koodia. @Path ('/ fruits') @Produces (MediaType.APPLICATION_JSON) @Cumsumes (MediaType.APPLICATION_JSON) public class FruitResource {@Inject FruitService fruitService @GET public List list () {return fruitService.list ()} @POST public List add (Hedelmä hedelmät) {fruitService.add (hedelmät) palautuslista ()}}

Siirtyminen vaiheeseen 3.

Vaihe 3: MongoDb-tietokannan määrittäminen

Syntaksi ja vakiokoodi mongoDb-tietokannan määrittämiseksi on annettu alla.

Java-ohjelman perusrakenne
# konfiguroi mongoDB-asiakas kahden solmun kopiosarjalle quarkus.mongodb.connection-string = mongodb: // mongo1: 27017, mongo2: 27017

Meidän tapauksessamme käytämme seuraavaa koodia tietokannan konfigurointiin.

# configure mongoDB client for replica set of two solmut quarkus.mongodb.connection-string = mongodb: // localhost: 27017

Siirtyminen vaiheeseen 4.

Vaihe 4: Suorita määritetty MongoDB-tietokanta

Seuraava vaihe on suorittaa juuri luomamme MongoDB-tietokanta. Käytä tätä varten alla olevaa koodia.

telakointiajo -ti --rm -p 27017: 27017 mongo: 4.0

Siirtyminen vaiheeseen 5.

Vaihe 5: Etuosan tekeminen

Nyt kun kaikki sovelluksen taustalla olevat työt on tehty, katsotaanpa sovelluksen käyttöliittymän koodaamiseen käytetty koodi.

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.ut tuo 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) {Document document = new Document () .append ('nimi', fruit.getName ()) .append ('description', fruit.getDescription ()) return getCollection (). insertOne (asiakirja)} private ReactiveMongoCollection getCollection () {return mongoClient.getDatabase ('hedelmä' ) .getCollection ('fruit')}} paketti 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) @Cumsumes (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 ()}}

Yllä olevassa esimerkissä hyödynnämme reaktiivinen mongoDb-asiakas etupään muodostumisen helpottamiseksi.

Siirtyminen vaiheeseen 6.

Vaihe 6: MongoDb-asiakkaan yksinkertaistaminen BSON-koodekilla

Käytä tätä varten alla olevaa koodia.

muuntaa objekti taulukon php: ksi
pack 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 toteuttaa CollectibleCodec {private final Codec documentCodec public FruitCodec () {this.documentCodec = MongoClient.getDefault. getDefault )} @Override public void encode (BsonWriter-kirjoittaja, Fruit fruit, EncoderContext encoderContext) {Document doc = uusi Document () doc.put ('nimi', fruit.getName ()) doc.put ('description', fruit.getDescription ()) documentCodec.encode (kirjailija, doc, encoderContext)} @Override public class getEncoderClass () {return Fruit.class} @Override public Fruit generoiIdIfAbsentFromDocument (Fruit document) {if (! documentHasId (document)) {document.setId ( UUID.randomUUID (). ToString ())} return document} @Override public boolean documentHasId ( Hedelmäasiakirja) {return document.getId ()! = Null} @Override public BsonValue getDocumentId (Fruit document) {return new BsonString (document.getId ())} @Override public Fruit decode (BsonReader reader, DecoderContext decoderContext) {Document document = documentCodec.decode (lukija, decoderContext) Hedelmä hedelmä = uusi Fruit () if (document.getString ('id')! = null) {fruit.setId (document.getString ('id'))} fruit.setName (asiakirja .getString ('nimi')) fruit.setDescription (document.getString ('description')) palauttaa hedelmät}}

Yhdistämme tämän nyt CodecProvider-ohjelmalla jo olemassa olevaan Hedelmä-luokkaan.

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

Siirtyminen vaiheeseen 7.

Vaihe 7: Lopullinen koodi

Tämän sovelluksen lopullinen koodi näyttää tältä.

package 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 (cor (c) .hasNext ()) {list.add (cursor.next ())}} lopuksi {cursor.close ()} return list} public void add (Fruit fruit) {getCollection (). insertOne (fruit)} private MongoCollection getCollection ( ) {return mongoClient.getDatabase ('fruit'). getCollection ('fruit', Fruit.class)}}

Johtopäätös

Nyt osaat määrittää ja käyttää MongoDB-asiakasta järjestelmässäsi. Kokeile näitä koodeja järjestelmässäsi ja kerro meille kokemuksestasi.

Artikkelin yhteenveto

Opi kaikki MongoDB-asiakkaasta ja siitä, miten voit määrittää sen järjestelmässäsi eri käyttötarkoituksiin. Lue lisätietoja.

Tämän avulla olemme saavuttaneet ' MongoDB-asiakas ' artikla.