Sve što trebate znati o MongoDB klijentu



Ovaj će vam članak pružiti detaljno i sveobuhvatno znanje MongoDB klijenta sa svim njegovim značajkama i upotrebama.

Ako ste već neko vrijeme bilo koji oblik sustava upravljanja relacijskim bazama podataka, vjerojatno ste naišli na ime . Prvi put predstavljen 2009. godine, danas je mongoDb jedan od najpopularnijih relacijskih sustava upravljanja bazama podataka u industriji. Glavni razlog njegove sulude popularnosti unatoč prisutnosti starijih upravitelja softvera relacijskih baza podataka poput MySqla prisutnih na tržištu je širok broj i velika svestranost koju donosi na stol. Korištenje MongoDB-a eliminira mnoge potrebe, a jedna od njih je potreba za stvaranjem baze podataka i definiranje vrste podataka svaki put kada se započne novi projekt. Dnevni red članka o klijentu MongoDB:





Da bi se postigla maksimalna funkcionalnost MongoDB-a, treba biti upoznat s MongoDB klijentom i u ovom ćemo članku razgovarati upravo o tome.

Preduvjeti za MongoDB klijenta

Da bi ovaj članak bio u potpunosti, prvo morate ispuniti sljedeće preduvjete.



Neka je IDE već prisutan u vašem sustavu.
Java Development Kit ili JDK verzije 1.8 i novije instalirane s pravilno konfiguriranim JAVA_HOME.
Instaliran Docker ili MongoDB.
Apache Maven verzija 3.5.3 i novije.

Arhitektura koju smo stvorili i koristili u ovom vodiču jedna je od najjednostavnijih. Kada se izvrši, korisnik može lako dodati podatke i elemente na popis, nakon čega će se automatski ažurirati u bazi podataka.

Logotip klijenta MongoDB



Uz to, pobrinuli smo se da sva komunikacija između podataka i poslužitelja bude u JSON-u, a svi podaci pohranjeni u MongoDB.

Početak rada

Da biste započeli s ovim projektom, slijedite korake navedene u nastavku.

1. korak: Izrada projekta na Mavenu

Prvi korak je uvijek stvaranje novog projekta i da biste to učinili, upotrijebite sljedeći kod.

ono što jest ima odnos u javi
mvn io.quarkus: quarkus-maven-plugin: 0.22.0: create -DprojectGroupId = org.acme -DprojectArtifactId = using-mongodb-client -DclassName = 'org.acme.rest.json.FruitResource' -Dpath = '/ voće '-Dextensions =' resteasy-jsonb, mongodb-klijent '

Kada pokrenete gornju naredbu, IDE će u vaš sustav uvesti JSON-B, MongoDb, kao i RESTEasy / JAX-RS klijente.

Nastavljamo s korakom 2.

Korak # 2: Dodavanje vaše prve JSON usluge odmora

Da biste to učinili, upotrijebite donji kod. paket org.acme.rest.json import java.util.Objects javna klasa Voće {privatno Ime niza privatno Opis niza javno Voće () {} Javno Voće (Ime niza, Opis niza) {this.name = ime this.description = opis } javni String getName () {return ime} javna praznina setName (Ime niza) {this.name = name} javna String getDescription () {return opis} javna void setDescription (Opis niza) {this.description = description} @Override public boolean jednako (Objekt obj) {if (! (obj instanceof Voće)) {return false} Voće ostalo = (Voće) obj return Objects.equals (other.name, this.name)} @Override public int hashCode () {return Objects.hash (this.name)}}

S gornjim primjerom prvo smo stvorili Voće koje će se kasnije koristiti u programu.

Dalje moramo stvoriti datoteku org.acme.rest.json.FruitService koja će biti korisnički sloj naše aplikacije. Da biste to učinili, upotrijebite donji kod.

paket 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.conct. .Inject import java.util.ArrayList import java.util.List @ApplicationScoped javna klasa FruitService {@Inject MongoClient mongoClient public List list () {List list = new ArrayList () MongoCursor cursor = getCollection (). Find (). Iterator (). ) probajte {while (cursor.hasNext ()) {Document document = cursor.next () Fruit fruit = new Fruit () fruit.setName (document.getString ('name')) fruit.setDescription (document.getString ('description ')) list.add (voće)}} napokon {cursor.close ()} return list} javna praznina dodaj (Voće) {Dokument dokumenta = novi Dokument () .append (' ime ', fruit.getName ()) .append ('description', fruit.getDescription ()) getCollection (). insertOne (document)} private MongoCollection getCollection () {return mongoClient.getDatabase ('fruit'). getCol lection ('fruit')}} Sada moramo urediti klasu org.acme.rest.json.FruitResource kako bi odgovarala našim potrebama. Da biste to učinili, upotrijebite donji kod. @Path ('/ fruit') @Produces (MediaType.APPLICATION_JSON) @Consumes (MediaType.APPLICATION_JSON) javna klasa FruitResource {@Inject FruitService fruitService @GET javni popis popisa () {return fruitService.list ()} @POST javni popis add (Voćno voće) {fruitService.add (voće) popis za povratak ()}}

Nastavljamo s korakom 3.

Korak # 3: Konfiguriranje baze podataka mongoDb

Sintaksa, kao i standardni kod za konfiguriranje baze podataka mongoDb, dana je u nastavku.

# konfigurirajte klijenta mongoDB za skup replika dva čvora quarkus.mongodb.connection-string = mongodb: // mongo1: 27017, mongo2: 27017

U našem ćemo slučaju koristiti sljedeći kod za konfiguriranje baze podataka.

# konfigurirajte klijenta mongoDB za skup replika dva čvora quarkus.mongodb.connection-string = mongodb: // localhost: 27017

Nastavljamo s korakom 4.

Korak # 4: Pokretanje konfigurirane MongoDB baze podataka

Sljedeći je korak pokretanje MongoDB baze podataka koju smo upravo stvorili. Da biste to učinili, upotrijebite donji kod.

pokretanje dockera -ti --rm -p 27017: 27017 mongo: 4.0

Nastavljamo s korakom 5.

Korak # 5: Izrada prednjeg kraja

Sad kad je sav posao na pozadini aplikacije završen, pogledajmo kod koji se koristi za kodiranje prednjeg kraja naše aplikacije.

paket 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.L import java.util.concurrent.CompletionStage @ApplicationScoped javna klasa ReactiveFruitService {@Inject ReactiveMongoClient mongoClient public CompletionStage list () {return getCollection (). find (). map (doc -> {Voće = novo Voće () fruit.setName ( doc.getString ('name')) fruit.setDescription (doc.getString ('description')) return fruit}). toList (). run ()} public CompletionStage add (Voće) {Document document = new Document () .append ('name', fruit.getName ()) .append ('description', fruit.getDescription ()) return getCollection (). insertOne (document)} private ReactiveMongoCollection getCollection () {return mongoClient.getDatabase ('fruit' ) .getCollection ('voće')}} paket 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) public class ReactiveFruitRes @Inject ReactiveFruitService fruitService @GET public CompletionStage list () {return fruitService.list ()} @POST public CompletionStage add (Voće voće) {fruitService.add (fruit) return list ()}}

U gornjem primjeru koristimo reaktivni klijent mongoDb za olakšavanje formiranja prednjeg kraja.

Nastavljamo s korakom 6.

idite na funkciju u pythonu

Korak # 6: Pojednostavljivanje klijenta mongoDb pomoću BSON kodeka

Da biste to učinili, upotrijebite donji kod.

paket 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. )} @Override javno void kodiranje (BsonWriter Writer, Fruit fruit, EncoderContext encoderContext) {Document doc = novi dokument () doc.put ('name', fruit.getName ()) doc.put ('description', fruit.getDescription ()) documentCodec.encode (Writer, Doc, encoderContext)} @Override public Class getEncoderClass () {return Fruit.class} @ Override public Fruit generirajIdIfAbsentFromDocument (Voćni dokument) {if (! documentHasId (document)) {document.setId (document) UUID.randomUUID (). ToString ())} povratni dokument} @Preuzmi javni logički dokumentHasId ( Voćni dokument) {return document.getId ()! = Null} @Preuzmi javni BsonValue getDocumentId (voćni dokument) {return new BsonString (document.getId ())} @ Override public Fruit decode (BsonReader čitač, DecoderContext decoderContext) {Document document document = documentCodec.decode (čitač, dekoderContext) Voće voće = novo Voće () if (document.getString ('id')! = null) {fruit.setId (document.getString ('id'))} fruit.setName (dokument .getString ('name')) fruit.setDescription (document.getString ('description')) return fruit}}

Sada ćemo upotrijebiti CodecProvider kako bismo to povezali s već prisutnom klasom voća.

paket 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 javna klasa FruitCodecProvider implementira CodecProvider {@Override public Codec get (Class clazz, Registry CodecRegistry) {if (clazz == Fruit.class) {return (Codec) new FruitCodec ()} return null}}

Nastavljamo sa korakom 7.

Korak # 7: Završni kod

Konačni kod za ovu aplikaciju izgledat će otprilike ovako.

paket 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.Injetilct import java.unjetilct import java.ubriktct import javax .ArrayList import java.util.List @ApplicationScoped javna klasa CodecFruitService {@Inject MongoClient mongoClient public list list () {List list = new ArrayList () MongoCursor cursor = getCollection (). Find (). Iterator () try {while (cursor) .hasNext ()) {list.add (cursor.next ())}} napokon {cursor.close ()} return list} javni void dodaj (Voće voće) {getCollection (). insertOne (voće)} private MongoCollection getCollection ( ) {return mongoClient.getDatabase ('fruit'). getCollection ('fruit', Fruit.class)}}

Zaključak

Sada znate kako konfigurirati i koristiti MongoDB klijent u svom sustavu. Naprijed i isprobajte ove kodove u svom sustavu i javite nam svoje iskustvo.

Sažetak članka

Saznajte sve o MongoDB klijentu i kako ga možete konfigurirati u svom sustavu za razne namjene. Čitajte dalje da biste saznali više.

Ovim dolazimo do kraja ' Klijent MongoDB ' članak.