Все, что вам нужно знать о клиенте 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.

Начиная

Чтобы начать работу с этим проектом, выполните шаги, описанные ниже.

Шаг # 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 = '/ foods '-Dextensions =' resteasy-jsonb, mongodb-client '

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

Переходим к шагу 2.

Шаг № 2: Добавление вашей самой первой службы отдыха JSON

Для этого используйте приведенный ниже код. package org.acme.rest.json import 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 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)}}

В приведенном выше примере мы сначала создали Fruit, которая позже будет использоваться в программе.

Затем нам нужно создать файл 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.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 ( ) попробуйте {while (cursor.hasNext ()) {Document document = cursor.next () Fruit fruit = new Fruit () fruit.setName (document.getString ('name')) fruit.setDescription (document.getString ('description ')) list.add (fruit)}} finally {cursor.close ()} return list} public void add (Fruit fruit) {Document document = new Document () .append (' name ', fruit.getName ()) .append ('описание', fruit.getDescription ()) getCollection (). insertOne (документ)} private MongoCollection getCollection () {return mongoClient.getDatabase ('fruit'). getCol lection ('fruit')}} Теперь нам нужно отредактировать класс org.acme.rest.json.FruitResource в соответствии с нашими потребностями. Для этого используйте приведенный ниже код. @Path ('/ foods') @Produces (MediaType.APPLICATION_JSON) @Consumes (MediaType.APPLICATION_JSON) открытый класс FruitResource {@Inject FruitService fruitService @GET public List list () {return fruitService.list ()} @POST public List add (Fruit fruit) {fruitService.add (fruit) return list ()}}

Переходим к шагу 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. Для этого воспользуйтесь приведенным ниже кодом.

docker run -ti --rm -p 27017: 27017 монго: 4.0

Переходим к шагу 5.

Шаг # 5: Делаем переднюю часть

Теперь, когда вся работа с серверной частью приложения выполнена, давайте взглянем на код, использованный для кодирования внешней части нашего приложения.

пакет 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 import java.util.concurrent.CompletionStage @ApplicationScoped открытый класс ReactiveFruitService {@Inject ReactiveMongoClient mongoClient public CompletionStage list () {return getCollection (). find (). map (doc -> {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 ('имя', fruit.getName ()) .append ('описание', fruit.getDescription ()) return getCollection (). insertOne (документ)} private ReactiveMongoCollection getCollection () {return mongoClient.getDatabase ('фрукт' ) .getCollection ('fruit')}} пакет 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_JSONRussian) общедоступный класс Reactive @Inject ReactiveFruitService fruitService @GET public CompletionStage list () {return fruitService.list ()} @POST public CompletionStage add (Fruit fruit) {fruitService.add (fruit) return list ()}}

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

Переходим к шагу 6.

Шаг # 6: Упрощение клиента mongoDb с использованием кодека BSON

Для этого воспользуйтесь приведенным ниже кодом.

разница между орудиями и расширениями
package 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 открытый класс FruitCodec реализует CollectibleCodec {закрытый финальный кодек documentCodec общедоступный FruitCodec () {this.documentCodec = MongoClient.getDefaultCodecRegistry (). get (Document.class (). )} @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 (writer, doc, encoderContext)} @Override public Class getEncoderClass () {return Fruit.class} @Override public Fruit generateIdIfAbsentFromDocument (Fruit document) {if (! documentHasId (document)) {document.setId ( UUID.randomUUID (). ToString ())} return document} @Override public 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) {документ документ = documentCodec.decode (reader, decoderContext) Fruit fruit = new Fruit () if (document.getString ('id')! = null) {fruit.setId (document.getString ('id'))} fruit.setName (документ .getString ('имя')) fruit.setDescription (document.getString ('description')) return fruit}}

Теперь мы воспользуемся CodecProvider, чтобы связать его с уже существующим классом Fruit.

package 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.Inject import java.util .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 ('фрукт'). getCollection ('фрукт', Fruit.class)}}

Заключение

Теперь вы знаете, как настроить и использовать клиент MongoDB в своей системе. Попробуйте эти коды в своей системе и поделитесь с нами своим опытом.

Резюме статьи

Узнайте все о клиенте MongoDB и о том, как вы можете настроить его в своей системе для различных целей. Читайте дальше, чтобы узнать больше.

На этом мы подошли к концу ' Клиент MongoDB ' статья.