Всичко, което трябва да знаете за клиента на MongoDB



Тази статия ще ви предостави подробни и изчерпателни познания за клиента на MongoDB с всички негови функции и приложения.

Ако от известно време сте под каквато и да е форма на система за управление на релационни бази данни, вероятно сте срещнали името на . Въведена за първи път през 2009 г., днес mongoDb е една от най-популярните системи за управление на релационни бази данни в индустрията. Основната причина за безумната му популярност, въпреки наличието на по-стари софтуерни мениджъри на релационни бази данни като MySql, присъстващи на пазара, е широкият брой и голямата гъвкавост, която носи на масата. Използването на MongoDB елиминира много нужди, като една от тях е необходимостта от създаване на база данни и определяне на типа данни всеки път, когато стартира нов проект. Програма на клиентската статия на MongoDB:





Но за да постигнем максимална функционалност от MongoDB, трябва да сме запознати с клиента на MongoDB и в тази статия ще обсъдим точно това.

Предпоставки за клиент на MongoDB

За да може тази статия да е изцяло, ще трябва първо да отговаряте на следните предпоставки.



Нека IDE вече присъства във вашата система.
Java Development Kit или JDK версия 1.8 и по-нови, инсталирани с JAVA_HOME конфигуриран правилно.
Инсталиран Docker или MongoDB.
Apache Maven версия 3.5.3 и по-нова.

Архитектурата, която създадохме и използвахме в това ръководство, е една от най-простите. Когато се изпълни, потребителят може лесно да добавя данни и елементи в списък, след което автоматично ще се актуализира в базата данни.

Клиентско лого на MongoDB



Заедно с това се уверихме, че цялата комуникация между данните и сървъра е в JSON и всички данни се съхраняват в MongoDB.

разлика между c c ++ и java

Приготвяме се да започнем

За да започнете с този проект, следвайте стъпките, описани по-долу.

Стъпка 1: Създаване на проекта на Maven

Първата стъпка винаги е да създадете нов проект и за да направите това, използвайте следния код.

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

Когато стартирате горната команда, IDE ще импортира JSON-B, MongoDb, както и RESTEasy / JAX-RS клиенти във вашата система.

Продължаване със стъпка 2.

Стъпка 2: Добавяне на първата ви услуга за почивка JSON

За да направите това, използвайте кода по-долу. пакет org.acme.rest.json импортиране java.util.Objects публичен клас Fruit {частно име на низа private Описание на низа public Fruit () {} публично Fruit (име на низ, описание на низа) {this.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 (Описание на низа) {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)}}

С горния пример първо създадохме плодовете, които по-късно ще бъдат използвани в програмата.

След това трябва да създадем файла org.acme.rest.json.FruitService, който ще бъде потребителският слой на нашето приложение. За да направите това, използвайте кода по-долу.

пакет 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.inje .Inject import java.util.ArrayList import java.util.List @ApplicationScoped публичен клас FruitService {@Inject MongoClient mongoClient public list list () {List list = new ArrayList () MongoCursor cursor = getCollection (). Find (). Iterator (). ) опитайте {while (cursor.hasNext ()) {Document document = cursor.next () Fruit fruit = new Fruit () fruit.setName (document.getString ('name')) fruit.setDescription (document.getString ('description) ')) list.add (плодове)}} накрая {cursor.close ()} списък за връщане} публично невалидно добавяне (Плодове плодове) {Документ на документа = нов документ () .append (' name ', fruit.getName ()) .append ('description', fruit.getDescription ()) getCollection (). insertOne (document)} private MongoCollection getCollection () {return mongoClient.getDatabase ('fruit'). getCol lection ('fruit')}} Сега трябва да редактираме класа org.acme.rest.json.FruitResource, за да отговаря на нашите нужди. За да направите това, използвайте кода по-долу. @Path ('/ плодове') @Produces (MediaType.APPLICATION_JSON) @Consumes (MediaType.APPLICATION_JSON) публичен клас FruitResource {@Inject FruitService fruitService @GET публичен списък списък () {return fruitService.list ()} @POST публичен списък добавяне (Плодови плодове) {fruitService.add (плодове) списък за връщане ()}}

Продължаване със стъпка 3.

Стъпка # 3: Конфигуриране на базата данни mongoDb

Синтаксисът, както и стандартният код за конфигуриране на базата данни mongoDb, е даден по-долу.

# конфигуриране на клиента mongoDB за набор от реплики от два възела quarkus.mongodb.connection-string = mongodb: // mongo1: 27017, mongo2: 27017

В нашия случай ще използваме следния код за конфигуриране на базата данни.

# конфигуриране на клиента mongoDB за набор от реплики от два възела quarkus.mongodb.connection-string = mongodb: // localhost: 27017

Продължаване със стъпка 4.

Стъпка # 4: Стартиране на конфигурираната база данни MongoDB

Следващата стъпка е да стартираме току-що създадената база данни MongoDB. За да направите това, използвайте кода по-долу.

.trim () java
docker run -ti --rm -p 27017: 27017 mongo: 4.0

Продължаваме със стъпка 5.

Стъпка # 5: Осъществяване на предния край

Сега, когато цялата работа в бекенда на приложението е завършена, нека да разгледаме кода, използван за кодиране на предния край на нашето приложение.

пакет org.acme.rest.json импорт io.quarkus.mongodb.ReactiveMongoClient импорт io.quarkus.mongodb.ReactiveMongoCollection импорт org.bson.Document import javax.enterprise.context.ApplicationScoped import javax.inject.Inject import java.util.L import java.util.concurrent.CompletionStage @ApplicationScoped публичен клас 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')) return fruit}). toList (). run ()} public CompletionStage add (Fruit fruit) {Document document = new Document () .append ('name', fruit.getName ()) .append ('description', fruit.getDescription ()) return getCollection (). insertOne (document)} private ReactiveMongoCollection getCollection () {return mongoClient.getDatabase ('fruit' ) .getCollection ('плод')}} пакет 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) публичен клас ReactiveFruitR @Inject ReactiveFruitService fruitService @GET public CompletionStage list () {return fruitService.list ()} @POST public CompletionStage add (Fruit fruit) {fruitService.add (fruit) return list ()}}

В горния пример ние използваме реактивен клиент на mongoDb за улесняване формирането на предния край.

Продължаваме със стъпка 6.

как да декларирам динамичен масив в java

Стъпка # 6: Опростяване на клиента mongoDb с помощта на BSON кодек

За да направите това, използвайте кода по-долу.

пакет org.acme.rest.json.codec импорт com.mongodb.MongoClient импорт 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 публичен клас FruitCodec изпълнява CollectibleCodec {private final Codec documentCodec public FruitCodec () {this.documentCodec = MongoClient.getDgementarCode. )} @Override public void encode (BsonWriter писател, Fruit fruit, EncoderContext encoderContext) {Document doc = нов документ () doc.put ('name', fruit.getName ()) doc.put ('description', fruit.getDescription ()) documentCodec.encode (писател, doc, encoderContext)} @Override публичен клас getEncoderClass () {return Fruit.class} @Override public Fruit geneIdIfAbsentFromDocument (Fruit document) {if (! documentHasId (document)) {document.setId (document) UUID.randomUUID (). ToString ())} документ за връщане} @Override публичен булев документHasId ( Fruit document) {return document.getId ()! = Null} @Override public BsonValue getDocumentId (Fruit document) {return new BsonString (document.getId ())} @Override public Fruit decode (BsonReader четец, DecoderContext decoderContext) {Document document document = documentCodec.decode (четец, декодерContext) 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}}

Сега ще използваме CodecProvider, за да го свържем с вече присъстващия клас Fruit.

пакет 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 публичен клас FruitCodecProvider внедрява CodecProvider {@Override public Codec get (Class clazz, CodecRegistry registry) {if (clazz == Fruit.class) {return (Codec) new FruitCodec ()} return null}}

Продължаваме със стъпка 7.

Стъпка # 7: Окончателен код

Крайният код за това приложение ще изглежда нещо подобно.

пакет 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.unject .ArrayList import java.util.List @ApplicationScoped публичен клас CodecFruitService {@Inject MongoClient mongoClient public list list () {List list = new ArrayList () MongoCursor cursor = getCollection (). Find (). Iterator () try {while (cursor) .hasNext ()) {list.add (cursor.next ())}} накрая {cursor.close ()} списък за връщане} public void add (Fruit fruit) {getCollection (). insertOne (fruit)} private MongoCollection getCollection ( ) {return mongoClient.getDatabase ('fruit'). getCollection ('fruit', Fruit.class)}}

Заключение

Сега знаете как да конфигурирате и използвате клиента MongoDB във вашата система. Продължете и опитайте тези кодове във вашата система и ни уведомете за вашия опит.

Резюме на статията

Научете всичко за клиента MongoDB и как можете да конфигурирате същото във вашата система за различни приложения. Прочетете, за да научите повече.

С това стигаме до края на ' Клиент на MongoDB ' статия.