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:
- Předpoklady pro klienta MongoDB
- Vytváření projektu na Maven
- Přidání vaší první odpočinkové služby JSON
- Konfigurace databáze MongoDB
- Spuštění nakonfigurované databáze MongoDB
- Výroba předního konce
- Zjednodušení klienta MongoDB pomocí kodeku BSON
- Závěrečný kód
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.
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.
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 ()}}
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
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}}
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.