Všetko, čo potrebujete vedieť o klientovi MongoDB



Tento článok vám poskytne podrobné a komplexné znalosti o klientovi MongoDB so všetkými jeho funkciami a použitiami.

Ak už nejaký čas pôsobíte v akejkoľvek forme systému správy relačných databáz, pravdepodobne ste sa stretli s menom . Prvýkrát predstavený v roku 2009, dnes je mongoDb jedným z najpopulárnejších systémov správy relačných databáz v priemysle. Hlavným dôvodom jeho šialenej popularity napriek prítomnosti starších manažérov relačných databázových softvérov, ako je MySql, na trhu je široká škála čísel a veľká univerzálnosť, ktorá prináša do tabuľky. Používanie MongoDB eliminuje mnohé potreby, jednou z nich je potreba vytvorenia databázy a definovanie dátového typu pri každom spustení nového projektu. Program článku klienta MongoDB:





Aby sme ale dosiahli maximálnu funkcionalitu MongoDB, je potrebné oboznámiť sa s klientom MongoDB a v tomto článku si o tom ešte povieme.

Predpoklady pre klienta MongoDB

Aby bol tento článok plne k dispozícii, musíte najskôr splniť nasledujúce predpoklady.



Majte už IDE vo svojom systéme.
Java Development Kit alebo JDK verzia 1.8 a vyššia nainštalovaná so správne nakonfigurovaným JAVA_HOME.
Je nainštalovaný Docker alebo MongoDB.
Apache Maven verzia 3.5.3 a vyššia.

Architektúra, ktorú sme vytvorili a použili v tejto príručke, je jedna z najjednoduchších. Po spustení môže používateľ ľahko pridať údaje a prvky do zoznamu, potom sa automaticky aktualizuje v databáze.

Logo klienta MongoDB



Spolu s tým sme sa uistili, že všetka komunikácia medzi dátami a serverom je v JSON a všetky dáta sú uložené v MongoDB.

Začíname

Ak chcete začať s týmto projektom, postupujte podľa pokynov uvedených nižšie.

ako nájsť dátový typ v pythone -

Krok 1: Vytvorenie projektu na serveri Maven

Prvým krokom je vždy vytvorenie nového projektu. Na tento účel použite nasledujúci kód.

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

Keď spustíte vyššie uvedený príkaz, IDE naimportuje do vášho systému klientov JSON-B, MongoDb a RESTEasy / JAX-RS.

Pokračujte krokom 2.

čo je to menný priestor c ++

Krok 2: Pridanie vašej úplne prvej odpočinkovej služby JSON

Použite na to kód uvedený nižšie. balík org.acme.rest.json import java.util.Objects verejná trieda Ovocie {private Názov reťazca private Popis reťazca public Fruit () {} public Fruit (Názov reťazca, Popis reťazca) {this.name = pomenovať this.description = popis } 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 boolean equals (Object obj) {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)}}

Pomocou vyššie uvedeného príkladu sme najskôr vytvorili program Fruit, ktorý sa neskôr použije v programe.

Ďalej musíme vytvoriť súbor org.acme.rest.json.FruitService, ktorý bude užívateľskou vrstvou našej aplikácie. Použite na to kód uvedený nižšie.

balík 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 ( ) vyskúšajte {while (cursor.hasNext ()) {dokument document = cursor.next () ovocie ovocie = new ovocie () fruit.setName (document.getString ('name')) fruit.setDescription (document.getString ('description) ')) list.add (ovocie)}} nakoniec {cursor.close ()} návratový zoznam} public void add (ovocné ovocie) {dokument dokument = nový dokument () .append (' meno ', ovocie.getName ()) .append ('description', fruit.getDescription ()) getCollection (). insertOne (document)} private MongoCollection getCollection () {return mongoClient.getDatabase ('fruit'). getCol lection ('fruit')}} Teraz musíme upraviť triedu org.acme.rest.json.FruitResource tak, aby vyhovovala našim potrebám. Použite na to kód uvedený nižšie. @Path ('/ fruits') @Produces (MediaType.APPLICATION_JSON) @Consumes (MediaType.APPLICATION_JSON) verejná trieda FruitResource {@Inject FruitService fruitService @GET zoznam verejných zoznamov () {return fruitService.list ()} @POST verejný zoznam pridať (Ovocie ovocie) {fruitService.add (ovocie) návratový zoznam ()}}

Pokračujte krokom 3.

Krok 3: Konfigurácia databázy mongoDb

Syntax a štandardný kód na konfiguráciu databázy mongoDb sú uvedené nižšie.

# nakonfigurujte klienta mongoDB na repliku dvoch uzlov quarkus.mongodb.connection-string = mongodb: // mongo1: 27017, mongo2: 27017

V našom prípade použijeme na konfiguráciu databázy nasledujúci kód.

# nakonfigurujte klienta mongoDB na repliku dvoch uzlov quarkus.mongodb.connection-string = mongodb: // localhost: 27017

Pokračujte krokom 4.

Krok č. 4: Spustenie nakonfigurovanej databázy MongoDB

Ďalším krokom je spustenie databázy MongoDB, ktorú sme práve vytvorili. Na tento účel použite nižšie uvedený kód.

docker run -ti --rm -p 27017: 27017 mongo: 4,0

Pokračujte krokom 5.

Krok č. 5: Výroba predného konca

Teraz, keď je hotová všetka práca na pozadí aplikácie, sa pozrime na kód použitý na kódovanie predného konca našej aplikácie.

balík 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.List importovať java.util.concurrent.CompletionStage @ApplicationScoped verejná trieda 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')) vrátiť ovocie}). toList (). run ()} public CompletionStage add (ovocné ovocie) {dokument dokument = nový dokument () .append ('name', fruit.getName ()) .append ('description', fruit.getDescription ()) return getCollection (). insertOne (document)} private ReactiveMongoCollection getCollection () {return mongoClient.getDatabase ('fruit') ) .getCollection ('fruit')}} balíček 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) verejná trieda ReactiveFruitR @Inject ReactiveFruitService fruitService @GET public CompletionStage list () {return fruitService.list ()} @POST public CompletionStage add (Fruit fruit) {fruitService.add (fruit) return list ()}}

V uvedenom príklade využívame reaktívny klient mongoDb na uľahčenie formovania frontendu.

Pokračujte krokom 6.

Krok č. 6: Zjednodušenie klienta mongoDb pomocou kodeku BSON

Na tento účel použite nižšie uvedený kód.

balíček 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 verejná trieda FruitCodec implementuje CollectibleCodec {súkromný konečný kodek documentCodec verejný FruitCodec () {this.documentCodec = MongoClient.getDefaultCodecRegistry (). )} @Override public void encode (spisovateľ BsonWriter, ovocné ovocie, EncoderContext encoderContext) {dokument doc = nový dokument () doc.put ('name', fruit.getName ()) doc.put ('description', fruit.getDescription ()) documentCodec.encode (spisovateľ, doc, encoderContext)} @Override public Class getEncoderClass () {return Fruit.class} @Override public Fruit generateIdIfAbsentFromDocument (ovocný dokument) {if (! documentHasId (document)) {document.setId ( UUID.randomUUID (). ToString ())} vrátiť dokument} @Override verejný boolean documentHasId ( Ovocný dokument) {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 (čítačka, decoderContext) Ovocie ovocie = nové Ovocie () if (document.getString ('id')! = null) {fruit.setId (document.getString ('id'))} ovocie.setName (dokument .getString ('name')) fruit.setDescription (document.getString ('description')) vrátiť ovocie}}

Teraz použijeme CodecProvider na prepojenie s už existujúcou triedou ovocia.

balík org.acme.rest.json.codec import org.acme.rest.json.Ovocie import org.bson.codecs.Codec import org.bson.codecs.configuration.CodecProvider import org.bson.codecs.configuration.CodecRegistry verejná trieda FruitCodecProvider implementuje CodecProvider {@Override public Codec get (Class clazz, CodecRegistry registry) {if (clazz == Fruit.class) {return (Codec) new FruitCodec ()} return null}}

Pokračujte krokom 7.

Krok 7: Konečný kód

Konečný kód pre túto aplikáciu bude vyzerať asi takto.

balík 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 verejná trieda CodecFruitService {@Inject MongoClient mongoClient public List list () {List list = new ArrayList () MongoCursor cursor = getCollection (). Find (). Iterator () try {while (cursor .hasNext ()) {list.add (cursor.next ())}} nakoniec {cursor.close ()} návratový zoznam} public void add (ovocné ovocie) {getCollection (). insertOne (ovocie)} súkromné ​​MongoCollection getCollection ( ) {return mongoClient.getDatabase ('ovocie'). getCollection ('ovocie', Fruit.class)}}

Záver

Teraz viete, ako nakonfigurovať a používať klienta MongoDB vo vašom systéme. Pokračujte a vyskúšajte tieto kódy vo svojom systéme a dajte nám vedieť svoje skúsenosti.

čo je nadmerné vybavenie v strojovom učení

Zhrnutie článku

Dozviete sa všetko o klientovi MongoDB a o tom, ako ho môžete nakonfigurovať vo svojom systéme na rôzne účely. Čítajte ďalej a dozviete sa viac.

S týmto prichádzame na koniec Klient MongoDB článok.