Minden, amit tudnia kell a MongoDB kliensről

Ez a cikk részletes és átfogó ismereteket nyújt Önnek a MongoDB Clientről, annak összes funkciójával és felhasználásával.

Ha már egy ideje bármilyen típusú relációs adatbázis-kezelő rendszer vagy, valószínűleg találkoztál a . Először 2009-ben mutatták be, ma a mongoDb az iparág egyik legnépszerűbb relációs adatbázis-kezelő rendszere. Őrült népszerűségének fő oka annak ellenére, hogy a piacon jelen vannak olyan régebbi relációs adatbázis-szoftverkezelők, mint a MySql, az a sok szám és a sokoldalúság, amelyet az asztalra hoz. A MongoDB használata számos szükségletet kiküszöböl, többek között az adatbázis létrehozásának szükségességét és az adattípus meghatározását minden új projekt elindításakor. A MongoDB ügyfélcikk napirendje:





De a MongoDB maximális funkcionalitásának eléréséhez ismernie kell a MongoDB klienst, és ebben a cikkben éppen ezt fogjuk megvitatni.

A MongoDB Client előfeltételei

A cikk teljes körű teljesítéséhez először meg kell felelnie a következő előfeltételeknek.



Legyen már IDE-je a rendszerében.
Java Development Kit vagy JDK 1.8 vagy újabb verzió telepítve, a JAVA_HOME megfelelően konfigurálva.
Docker vagy MongoDB telepítve.
Apache Maven 3.5.3 és újabb verzió.

Az ebben az útmutatóban létrehozott és használt architektúra az egyik legegyszerűbb. A végrehajtás után a felhasználó könnyen hozzáadhat adatokat és elemeket egy listához, majd automatikusan frissül az adatbázisban.

MongoDB kliens logó



Ezzel együtt megbizonyosodtunk arról, hogy az adatok és a szerver közötti kommunikáció JSON-ban zajlik, és az összes adatot a MongoDB tárolja.

mi a session a java-ban

Elkezdeni

A projekt megkezdéséhez kövesse az alábbiakban ismertetett lépéseket.

1. lépés: A projekt létrehozása a Maven-en

Az első lépés mindig egy új projekt létrehozása, és ennek érdekében használja a következő kódot.

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

A fenti parancs futtatásakor az IDE a JSON-B, MongoDb, valamint a RESTEasy / JAX-RS klienseket importálja a rendszerébe.

Folytatás a 2. lépéssel.

2. lépés: Az első JSON pihenőszolgáltatás hozzáadása

Ehhez használja az alábbi kódot. org.acme.rest.json csomag 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 logikai egyenlő (Object obj) {if (! (gyümölcs példája)) {return false} Gyümölcs egyéb = (Fruit) obj return Objects.equals (egyéb.név, ez.név)} @Orride public int hashCode () {return Objects.hash (this.name)}}

A fenti példával először megalkottuk a Gyümölcsöt, amelyet később felhasználunk a programban.

Ezután létre kell hoznunk az org.acme.rest.json.FruitService fájlt, amely az alkalmazás felhasználói rétege lesz. Ehhez használja az alábbi kódot.

org.acme.rest.json csomag 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 inj 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óbálkozzon a {while (cursor.hasNext ()) {Document document = cursor.next () Gyümölcs gyümölcs = new Gyümölcs () fruit.setName (document.getString ('név')) fruit.setDescription (document.getString ('description ')) list.add (fruit)}} végül {cursor.close ()} return list} public void add (Fruit fruit) {Document document = new Document () .append (' name ', fruit.getName ()) .append ('description', fruit.getDescription ()) getCollection (). insertOne (dokumentum)} private MongoCollection getCollection () {return mongoClient.getDatabase ('fruit'). getCol lection ('fruit')}} Most szerkesztenünk kell az org.acme.rest.json.FruitResource osztályt, hogy megfeleljen igényeinknek. Ehhez használja az alábbi kódot. @Path ('/ fruits') @Produces (MediaType.APPLICATION_JSON) @Cumsumes (MediaType.APPLICATION_JSON) public class FruitResource {@Inject FruitService fruitService @GET public List list () {return fruitService.list ()} @POST public List add (Gyümölcsös gyümölcs) {fruitService.add (gyümölcs) visszatérési lista ()}}

Folytatás a 3. lépéssel.

3. lépés: A mongoDb adatbázis konfigurálása

A mongoDb adatbázis konfigurálásának szintaxisa, valamint a szabványos kód az alábbiakban található.

# konfigurálja a mongoDB klienst két csomópont replikakészletéhez: quarkus.mongodb.connection-string = mongodb: // mongo1: 27017, mongo2: 27017

Esetünkben a következő kódot használjuk az adatbázis konfigurálásához.

# konfigurálja a mongoDB klienst egy két csomópont replikakészletéhez: quarkus.mongodb.connection-string = mongodb: // localhost: 27017

Folytatás a 4. lépéssel.

4. lépés: A konfigurált MongoDB adatbázis futtatása

A következő lépés az imént létrehozott MongoDB adatbázis futtatása. Ehhez használja az alábbi kódot.

java konvertáló dupla int
dokkoló futás -ti --rm -p 27017: 27017 mongo: 4.0

Folytatás az 5. lépéssel.

5. lépés: Az elülső rész elkészítése

Most, hogy az alkalmazás hátterében végzett összes munka elkészült, vessünk egy pillantást az alkalmazásunk elülső részének kódolásához használt kódra.

org.acme.rest.json csomag io.quarkus.mongodb.ReactiveMongoClient import io.quarkus.mongodb.ReactiveMongoCollection import org.bson.Document import javax.enterprise.context.ApplicationScoped import javax.inject.Inject import java.ut 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 doc.getString ('név')) fruit.setDescription (doc.getString ('description')) return fruit}). toList (). run ()} public CompletionStage add (Gyümölcs gyümölcs) {Document document = új dokumentum () .append ('név', fruit.getName ()) .append ('leírás', fruit.getDescription ()) return getCollection (). insertOne (dokumentum)} private ReactiveMongoCollection getCollection () {return mongoClient.getDatabase ('gyümölcs' ) .getCollection ('gyümölcs')}} org.acme.rest.json csomag javax.inject.Inject import javax.ws.rs. * i mport javax.ws.rs.core.MediaType import java.util.List importjava @ Inject ReactiveFruitService fruitService @GET public CompletionStage list () {return fruitService.list ()} @POST public CompletionStage add (Fruit fruit) {fruitService.add (fruit) return list ()}}

A fenti példában felhasználjuk egy reaktív mongoDb kliens a kezelőfelület kialakításának megkönnyítésére.

Folytatás a 6. lépéssel.

hogyan nyitható meg az aws cli

6. lépés: A mongoDb kliens egyszerűsítése BSON kodek használatával

Ehhez használja az alábbi kódot.

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 public class FruitCodec implementálja a CollectibleCodec {private final Codec documentCodec public FruitCodec () {this.documentCodec = MongoClient.getDefault (getDefault) )} @Orride public void encode (BsonWriter író, Fruit fruit, EncoderContext encoderContext) {Document doc = új Document () doc.put ('név', fruit.getName ()) doc.put ('leírás', fruit.getDescription ()) documentCodec.encode (író, doc, encoderContext)} @Orride nyilvános osztály getEncoderClass () {return Fruit.class} @Orride public Fruit geneIdIfAbsentFromDocument (Gyümölcs dokumentum) {if (! documentHasId (dokumentum)) {document.setId ( UUID.randomUUID (). ToString ())} return document} @Orride nyilvános logikai dokumentumHasId ( Gyümölcsdokumentum) {return document.getId ()! = Null} @ Nyilvános BsonValue felülírása getDocumentId (Gyümölcs dokumentum) {return new BsonString (document.getId ())} @Override public Fruit decode (BsonReader reader, DecoderContext decoderContext) {Document document = documentCodec.decode (olvasó, decoderContext) Gyümölcs gyümölcs = új Gyümölcs () if (document.getString ('id')! = null) {fruit.setId (document.getString ('id'))} fruit.setName (dokumentum .getString ('név')) fruit.setDescription (document.getString ('leírás')) visszatérő gyümölcs}}

Most egy CodecProvider segítségével fogjuk összekapcsolni ezt a már meglévő Fruit osztályral.

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 nyilvános osztály A FruitCodecProvider végrehajtja a CodecProvider {@Orride public Codec get (Class clazz, CodecRegistry registry) {if (clazz == Fruit.class) {return (Codec) new FruitCodec ()} return null}}

Folytatás a 7. lépéssel.

7. lépés: Végleges kód

Az alkalmazás végső kódja valami ilyesmit fog kinézni.

org.acme.rest.json csomag 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 (curs .hasNext ()) {list.add (cursor.next ())}} végül {cursor.close ()} return list} public void add (Gyümölcs gyümölcs) {getCollection (). insertOne (gyümölcs)} privát MongoCollection getCollection ( ) {return mongoClient.getDatabase ('fruit'). getCollection ('fruit', Fruit.class)}}

Következtetés

Most már tudja, hogyan kell konfigurálni és használni a MongoDB klienst a rendszerében. Próbálja ki ezeket a kódokat a rendszerében, és tudassa velünk tapasztalatait.

Cikk összefoglaló

Tudjon meg mindent a MongoDB kliensről és arról, hogyan konfigurálhatja ugyanezt a rendszerben különböző felhasználásokra. Olvasson tovább, ha többet szeretne megtudni.

Ezzel a végére érünk ' MongoDB kliens ' cikk.