Vše, co potřebujete vědět o klientovi MongoDB

Tento článek vám poskytne podrobné a komplexní znalosti klienta MongoDB se všemi jeho funkcemi a možnostmi použití.

Pokud jste nějakou dobu nějakou formou systému správy relačních databází, pravděpodobně jste narazili na název . Poprvé představen v roce 2009, dnes je mongoDb jedním z nejpopulárnějších systémů správy relačních databází v tomto odvětví. Hlavním důvodem jeho šílené popularity i přes přítomnost starších manažerů relačních databázových softwarů, jako je MySql, přítomných na trhu, je široká škála čísel a velká univerzálnost, kterou přináší. Použití MongoDB eliminuje mnoho potřeb, jednou z nich je potřeba vytvořit databázi a definovat datový typ při každém spuštění nového projektu. Agenda článku klienta MongoDB:





Abychom ale dosáhli maximální funkčnosti z MongoDB, je třeba se seznámit s klientem MongoDB a v tomto článku se budeme zabývat právě tím.

Předpoklady pro klienta MongoDB

Aby byl tento článek plně, budete muset nejprve splnit následující předpoklady.



Připravte IDE ve vašem systému.
Sada Java Development Kit nebo JDK verze 1.8 a vyšší nainstalovaná se správně nakonfigurovaným prostředím JAVA_HOME.
Docker nebo MongoDB nainstalován.
Apache Maven verze 3.5.3 a vyšší.

Architektura, kterou jsme vytvořili a použili v této příručce, je jednou z nejjednodušších. Po spuštění může uživatel snadno přidat data a prvky do seznamu, poté se automaticky aktualizuje v databázi.

Logo klienta MongoDB



Spolu s tím jsme se ujistili, že veškerá komunikace mezi daty a serverem je v JSON a všechna data jsou uložena v MongoDB.

Začínáme

Chcete-li začít s tímto projektem, postupujte podle pokynů uvedených níže.

role a odpovědnosti administrátora linuxu

Krok 1: Vytvoření projektu na Maven

Prvním krokem je vždy vytvoření nového projektu a za tímto účelem použijte následující 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 = '/ ovoce '-Dextensions =' resteasy-jsonb, mongodb-client '

Když spustíte výše uvedený příkaz, IDE naimportuje do vašeho systému klienty JSON-B, MongoDb a RESTEasy / JAX-RS.

Pokračujte krokem 2.

loutka vs kuchař vs docker

Krok 2: Přidání vaší první služby odpočinku JSON

K tomu použijte níže uvedený kód. balíček org.acme.rest.json import java.util.Objects veřejná třída Fruit {private Název řetězce private Popis řetězce public Fruit () {} public Fruit (název řetězce, popis řetězce) {this.name = název 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 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)}}

S výše uvedeným příkladem jsme nejprve vytvořili ovoce, které bude později použito v programu.

Dále musíme vytvořit soubor org.acme.rest.json.FruitService, který bude uživatelskou vrstvou naší aplikace. K tomu použijte níže uvedený kód.

balíček 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 ( ) zkuste {while (cursor.hasNext ()) {Document document = cursor.next () Fruit fruit = new Fruit () fruit.setName (document.getString ('name')) fruit.setDescription (document.getString ('description) ')) list.add (ovoce)}} konečně {cursor.close ()} návratový seznam} public void add (ovoce ovoce) {dokument dokument = nový dokument () .append (' name ', ovoce.getName ()) .append ('description', fruit.getDescription ()) getCollection (). insertOne (document)} private MongoCollection getCollection () {return mongoClient.getDatabase ('fruit'). getCol lection ('fruit')}} Nyní musíme upravit třídu org.acme.rest.json.FruitResource, aby vyhovovala našim potřebám. K tomu použijte níže uvedený kód. @Path ('/ fruits') @Produces (MediaType.APPLICATION_JSON) @Consumes (MediaType.APPLICATION_JSON) veřejná třída FruitResource {@Inject FruitService fruitService @GET veřejný seznam List () {návrat fruitService.list ()} @POST public List add (Ovoce ovoce) {fruitService.add (ovoce) návratový seznam ()}}

Pokračujte krokem 3.

Krok 3: Konfigurace databáze mongoDb

Syntaxe i standardní kód pro konfiguraci databáze mongoDb jsou uvedeny níže.

# nakonfigurujte klienta mongoDB pro sadu replik dvou uzlů quarkus.mongodb.connection-string = mongodb: // mongo1: 27017, mongo2: 27017

V našem případě použijeme následující kód ke konfiguraci databáze.

# nakonfigurujte klienta mongoDB pro sadu replik dvou uzlů quarkus.mongodb.connection-string = mongodb: // localhost: 27017

Pokračujte krokem 4.

Krok č. 4: Spuštění nakonfigurované databáze MongoDB

Dalším krokem je spuštění databáze MongoDB, kterou jsme právě vytvořili. K tomu použijte níže uvedený kód.

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

Pokračujte krokem 5.

Krok č. 5: Vytvoření přední části

Nyní, když je veškerá práce na back-endu aplikace hotová, pojďme se podívat na kód použitý ke kódování frontendu naší aplikace.

balíček 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 importovat java.util.concurrent.CompletionStage @ApplicationScoped veřejná třída 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átit ovoce}). toList (). run ()} public CompletionStage add (ovoce ovoce) {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) veřejná třída ReactiveFruitR @Inject ReactiveFruitService fruitService @GET public CompletionStage list () {return fruitService.list ()} @POST public CompletionStage add (Fruit fruit) {fruitService.add (fruit) return list ()}}

Ve výše uvedeném příkladu využíváme reaktivní klient mongoDb, který usnadní formování frontendu.

Pokračujte krokem 6.

Krok č. 6: Zjednodušení klienta mongoDb pomocí kodeku BSON

K tomu použijte níže 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 veřejná třída FruitCodec implementuje CollectibleCodec {soukromý konečný kodek documentCodec veřejný FruitCodec () {this.documentCodec = MongoClient.getDefaultCodecRegistry (). )} @Override public void encode (BsonWriter writer, Fruit fruit, EncoderContext encoderContext) {Document doc = new Document () doc.put ('name', fruit.getName ()) doc.put ('description', fruit.getDescription ()) documentCodec.encode (spisovatel, doc, encoderContext)} @Override public Class getEncoderClass () {return Fruit.class} @Override public Fruit generateIdIfAbsentFromDocument (Fruit document) {if (! documentHasId (document)) {document.setId ( UUID.randomUUID (). ToString ())} vrátit dokument} @Override veřejný boolean documentHasId ( Fruit document) {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 (čtečka, decoderContext) Ovoce ovoce = nové ovoce () if (document.getString ('id')! = null) {fruit.setId (document.getString ('id'))} ovoce.setName (dokument .getString ('name')) ovoce.setDescription (document.getString ('description')) vrátit ovoce}}

Nyní použijeme CodecProvider k propojení s již přítomnou třídou Fruit.

balíček 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 veřejná třída FruitCodecProvider implementuje CodecProvider {@Override public Codec get (Class clazz, CodecRegistry registry) {if (clazz == Fruit.class) {return (Codec) new FruitCodec ()} return null}}

Pokračujte krokem 7.

Krok č. 7: Konečný kód

Konečný kód pro tuto aplikaci bude vypadat asi takto.

balíček 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 (cursor .hasNext ()) {list.add (cursor.next ())}} konečně {cursor.close ()} návratový seznam} public void add (ovoce ovoce) {getCollection (). insertOne (ovoce)} soukromý MongoCollection getCollection ( ) {return mongoClient.getDatabase ('ovoce'). getCollection ('ovoce', Fruit.class)}}

Závěr

Nyní víte, jak nakonfigurovat a používat klienta MongoDB ve vašem systému. Jděte do toho a vyzkoušejte tyto kódy ve svém systému a dejte nám vědět své zkušenosti.

__init__ v pythonu

Shrnutí článku

Zjistěte vše o klientovi MongoDB a o tom, jak jej můžete nakonfigurovat ve vašem systému pro různá použití. Přečtěte si další informace.

S tímto se dostáváme na konec ' Klient MongoDB ' článek.