Alt du trenger å vite om MongoDB Client



Denne artikkelen vil gi deg en detaljert og omfattende kunnskap om MongoDB Client med alle funksjonene og bruken.

Hvis du har vært noen form for relasjonelt databasestyringssystem for en stund nå, har du sannsynligvis kommet over navnet på . Først introdusert i 2009, i dag er mongoDb et av de mest populære relasjonelle databasestyringssystemene i bransjen. Hovedårsaken til dens vanvittige popularitet til tross for tilstedeværelsen av eldre relasjonelle databaseprogramledere som MySql til stede i markedet, er det store antallet og store allsidighet det gir til bordet. Bruk av MongoDB eliminerer mange behov, blant annet behovet for å opprette en database og definere datatypen hver gang et nytt prosjekt startes. Dagsorden for MongoDB-klientartikkelen:

hvordan konvertere binær til desimal i java





Men for å oppnå maksimal funksjonalitet ut av MongoDB, må man være kjent med MongoDB-klienten, og i denne artikkelen vil vi diskutere nettopp det.

Forutsetninger for MongoDB Client

For at denne artikkelen skal være fullstendig, må du først oppfylle følgende forutsetninger.



Ha en IDE allerede til stede i systemet ditt.
Java Development Kit eller JDK versjon 1.8 og nyere installert med JAVA_HOME konfigurert riktig.
Docker eller MongoDB installert.
Apache Maven versjon 3.5.3 og nyere.

Arkitekturen som vi har laget og brukt i denne guiden er en av de enkleste. Når den utføres, kan brukeren enkelt legge til data og elementer i en liste, hvoretter den automatisk blir oppdatert i databasen.

MongoDB-klientlogo



Sammen med dette har vi sørget for at all kommunikasjon mellom dataene og serveren er i JSON og at alle dataene er lagret i MongoDB.

Starter

Følg trinnene nedenfor for å komme i gang med dette prosjektet.

Trinn 1: Opprette prosjektet på Maven

Det første trinnet er alltid å lage et nytt prosjekt, og for å gjøre dette, bruk følgende kode.

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

Når du kjører kommandoen ovenfor, vil IDE importere JSON-B, MongoDb samt RESTEasy / JAX-RS klienter til systemet ditt.

Gå videre med trinn 2.

Trinn 2: Legge til din aller første JSON-hviletjeneste

For å gjøre dette, bruk koden nedenfor. pakke 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 boolsk er lik (Objekt obj) {hvis (! (obj forekomst av frukt)) {returner falsk} Frukt annen = (Frukt) obj return Objects.equals (other.name, this.name)} @ Override public int hashCode () {return Objects.hash (dette.navn)}}

Med eksemplet ovenfor har vi først laget frukten som senere skal brukes i programmet.

Deretter må vi lage org.acme.rest.json.FruitService-filen som vil være brukerlaget for applikasjonen vår. For å gjøre dette, bruk koden nedenfor.

pakke 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 .Injiser 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 () ) prøv {while (cursor.hasNext ()) {Document document = cursor.next () Fruit fruit = new Fruit () fruit.setName (document.getString ('name')) fruit.setDescription (document.getString ('description ')) list.add (fruit)}} til slutt {cursor.close ()} returliste} public void add (Fruit fruit) {Document document = new Document () .append (' name ', fruit.getName ()) .append ('beskrivelse', fruit.getDescription ()) getCollection (). insertOne (dokument)} privat MongoCollection getCollection () {return mongoClient.getDatabase ('frukt'). getCol lection ('fruit')}} Nå må vi redigere klassen org.acme.rest.json.FruitResource for å dekke våre behov. For å gjøre dette, bruk koden nedenfor. @Path ('/ fruits') @Produces (MediaType.APPLICATION_JSON) @Consumes (MediaType.APPLICATION_JSON) offentlig klasse FruitResource {@Inject FruitService fruitService @GET public Listeliste () {return fruitService.list ()} @POST public List legg til (Fruktfrukt) {fruitService.add (frukt) returliste ()}}

Gå videre med trinn 3.

Trinn 3: Konfigurere mongoDb-databasen

Syntaksen samt standardkoden for konfigurering av mongoDb-databasen er som gitt nedenfor.

hva er en konstruktør i python
# konfigurer mongoDB-klienten for et replikasett med to noder quarkus.mongodb.connection-string = mongodb: // mongo1: 27017, mongo2: 27017

I vårt tilfelle vil vi bruke følgende kode for å konfigurere databasen.

# konfigurer mongoDB-klienten for et replikasett med to noder quarkus.mongodb.connection-string = mongodb: // localhost: 27017

Gå videre med trinn 4.

Trinn 4: Kjører den konfigurerte MongoDB-databasen

Neste trinn er å kjøre MongoDB-databasen vi nettopp opprettet. For å gjøre dette, bruk koden nedenfor.

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

Gå videre med trinn 5.

Trinn 5: Å lage frontenden

Nå som alt arbeidet bak i applikasjonen er gjort, la oss ta en titt på koden som brukes til å kode frontenden av applikasjonen vår.

pakke 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 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 ((frukt)) doc.getString ('name')) fruit.setDescription (doc.getString ('description')) return fruit}). toList (). run ()} public CompletionStage add (Fruit fruit) {Document document = new Document () .append ('name', fruit.getName ()) .append ('description', fruit.getDescription ()) returner getCollection (). insertOne (dokument)} privat ReactiveMongoCollection getCollection () {return mongoClient.getDatabase ('fruit' ) .getCollection ('fruit')}} pakke 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) offentlig klasse ReactiveFruit @Inject ReactiveFruitService fruitService @GET public CompletionStage list () {return fruitService.list ()} @POST public CompletionStage add (Fruit fruit) {fruitService.add (fruit) return list ()}}

I eksemplet ovenfor bruker vi en reaktiv mongoDb-klient for å lette dannelsen av frontenden.

dyp læring vs maskinlæring vs mønstergjenkjenning

Gå videre med trinn 6.

Trinn 6: Forenkling av mongoDb-klienten ved hjelp av BSON-kodeken

For å gjøre dette, bruk koden nedenfor.

pakke org.acme.rest.json.codec importerer com.mongodb.MongoClient importerer org.acme.rest.json.Frukt importerer org.bson. * importerer org.bson.codecs.Codec importerer org.bson.codecs.CollectibleCodec importerer org .bson.codecs.DecoderContext import org.bson.codecs.EncoderContext import java.util.UUID offentlig klasse FruitCodec implementerer CollectibleCodec {private final Codec documentCodec public FruitCodec () {this.documentCodec = MongoClient.getDefaultCodecRegistry (). )} @ Override offentlig tomkode (BsonWriter-forfatter, fruktfrukt, EncoderContext encoderContext) {Document doc = nytt dokument () doc.put ('name', fruit.getName ()) doc.put ('beskrivelse', fruit.getDescription ()) documentCodec.encode (writer, doc, encoderContext)} @ Override public Class getEncoderClass () {return Fruit.class} @ Override public Fruit generateIdIfAbsentFromDocument (Fruit document) {if (! documentHasId (document)) {document.setId ( UUID.randomUUID (). ToString ())} returdokument} @ Overstyr offentlig boolsk dokumentHasId ( Fruktdokument) {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 (reader, decoderContext) Fruit fruit = new Fruit () if (document.getString ('id')! = null) {fruit.setId (document.getString ('id'))} fruit.setName (document .getString ('name')) fruit.setDescription (document.getString ('description')) return fruit}}

Nå skal vi bruke en CodecProvider for å koble dette til fruktklassen som allerede er til stede.

pakke org.acme.rest.json.codec importerer org.acme.rest.json.Fruit importerer org.bson.codecs.Codec importerer org.bson.codecs.configuration.CodecProvider importerer org.bson.codecs.configuration.CodecRegistry offentlig klasse FruitCodecProvider implementerer CodecProvider {@Override public Codec get (Class clazz, CodecRegistry registry) {if (clazz == Fruit.class) {return (Codec) new FruitCodec ()} return null}}

Gå videre med trinn 7.

Trinn 7: Endelig kode

Den endelige koden for dette programmet, vil se ut som dette.

pakke 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 importerer java.util.List @ApplicationScoped public class CodecFruitService {@Inject MongoClient mongoClient public List list () {List list = new ArrayList () MongoCursor cursor = getCollection (). Find (). Iterator () try {while (cursor) .hasNext ()) {list.add (cursor.next ())}} til slutt {cursor.close ()} returliste} public void add (Fruit fruit) {getCollection (). insertOne (fruit)} private MongoCollection getCollection ( ) {return mongoClient.getDatabase ('fruit'). getCollection ('fruit', Fruit.class)}}

Konklusjon

Nå vet du hvordan du konfigurerer og bruker MongoDB-klienten i systemet ditt. Gå videre og prøv disse kodene i systemet ditt og gi oss beskjed om din opplevelse.

Artikkelsammendrag

Lær alt om MongoDB-klienten og hvordan du kan konfigurere det samme i systemet ditt for forskjellige bruksområder. Les videre for å vite mer.

Med dette kommer vi til slutten av ' MongoDB-klient ' artikkel.