Tudo o que você precisa saber sobre o cliente MongoDB



Este artigo fornecerá a você um conhecimento detalhado e abrangente do Cliente MongoDB com todos os seus recursos e usos.

Se você tem algum tipo de sistema de gerenciamento de banco de dados relacional há algum tempo, provavelmente já se deparou com o nome de . Apresentado pela primeira vez no ano de 2009, hoje o mongoDb é um dos sistemas de gerenciamento de banco de dados relacional mais populares do setor. A principal razão por trás de sua popularidade insana, apesar da presença de gerenciadores de software de banco de dados relacional mais antigos, como o MySql, presentes no mercado, é a variedade de números e a grande versatilidade que oferece. O uso do MongoDB elimina muitas necessidades, uma delas é a necessidade de criar um banco de dados e definir o tipo de dados sempre que um novo projeto é iniciado. Agenda do artigo do cliente MongoDB:





Mas para obter a funcionalidade máxima do MongoDB, é necessário estar familiarizado com o cliente MongoDB e, neste artigo, discutiremos exatamente isso.

Pré-requisitos para Cliente MongoDB

Para ler este artigo totalmente, você precisará primeiro atender aos seguintes pré-requisitos.



Tenha um IDE já presente em seu sistema.
Java Development Kit ou JDK versão 1.8 e superior instalado com JAVA_HOME configurado corretamente.
Docker ou MongoDB instalado.
Apache Maven versão 3.5.3 e superior.

A arquitetura que criamos e usamos neste guia é uma das mais simples. Quando executado, o usuário pode facilmente adicionar dados e elementos em uma lista, após o qual será automaticamente atualizado no banco de dados.

Logotipo do cliente MongoDB



namespace em c ++

Junto com isso, garantimos que toda a comunicação entre os dados e o servidor seja em JSON e todos os dados sejam armazenados no MongoDB.

Começando

Para iniciar este projeto, siga as etapas descritas abaixo.

Etapa 1: Criando o projeto no Maven

O primeiro passo é sempre criar um novo projeto e para isso utilize o seguinte código.

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

Ao executar o comando acima, o IDE importará os clientes JSON-B, MongoDb e RESTEasy / JAX-RS para o seu sistema.

Prosseguindo com a Etapa 2.

Etapa 2: Adicionando seu primeiro serviço de descanso JSON

Para fazer isso, use o código abaixo. 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)}}

Com o exemplo acima, primeiro criamos a Fruta que será usada posteriormente no programa.

Em seguida, precisamos criar o arquivo org.acme.rest.json.FruitService, que será a camada do usuário de nosso aplicativo. Para fazer isso, use o código abaixo.

pacote 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 ( ) try {while (cursor.hasNext ()) {Document document = cursor.next () Fruit fruit = new Fruit () fruit.setName (document.getString ('name')) fruit.setDescription (document.getString ('description ')) list.add (fruta)}} finalmente {cursor.close ()} lista de retorno} public void add (fruta fruta) {Document document = new Document () .append (' name ', fruit.getName ()) .append ('descrição', fruit.getDescription ()) getCollection (). insertOne (document)} private MongoCollection getCollection () {return mongoClient.getDatabase ('fruit'). getCol lection ('fruit')}} Agora precisamos editar a classe org.acme.rest.json.FruitResource para atender às nossas necessidades. Para fazer isso, use o código abaixo. @Path ('/ fruits') @Produces (MediaType.APPLICATION_JSON) @Consumes (MediaType.APPLICATION_JSON) public class FruitResource {@Inject FruitService fruitService @GET public List list () {return fruitService.list ()} @POST public List add (Fruta fruta) {frutaService.add (fruta) lista de retorno ()}}

Prosseguindo com a Etapa 3.

Etapa 3: Configurando o banco de dados mongoDb

A sintaxe, bem como o código padrão para configurar o banco de dados mongoDb, são fornecidos abaixo.

# configurar o cliente mongoDB para um conjunto de réplicas de dois nós quarkus.mongodb.connection-string = mongodb: // mongo1: 27017, mongo2: 27017

No nosso caso, utilizaremos o seguinte código para configurar o banco de dados.

fantoche vs chef vs ansible
# configurar o cliente mongoDB para um conjunto de réplicas de dois nós quarkus.mongodb.connection-string = mongodb: // localhost: 27017

Prosseguindo com a Etapa 4.

Etapa 4: executando o banco de dados MongoDB configurado

A próxima etapa é executar o banco de dados MongoDB que acabamos de criar. Para fazer isso, use o código abaixo.

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

Prosseguindo com a Etapa 5.

Etapa 5: fazer o front end

Agora que todo o trabalho no back-end do aplicativo está concluído, vamos dar uma olhada no código usado para codificar o front-end do nosso aplicativo.

package 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 public class 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 ('fruit')}} package 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) classe pública ReactiveFruitResource { @Inject ReactiveFruitService fruitService @GET public CompletionStage list () {return fruitService.list ()} @POST public CompletionStage add (Fruit fruit) {fruitService.add (fruit) return list ()}}

No exemplo acima, estamos fazendo uso de um cliente mongoDb reativo para facilitar a formação do front end.

Prosseguindo com a Etapa 6.

Etapa 6: Simplificar o cliente mongoDb usando o codec BSON

Para fazer isso, use o código abaixo.

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 public class FruitCodec implementa CollectibleCodec {private final Codec documentCodec public FruitCodec () {this.documentCodec = MongoClient.getDefaultCodecRegistry () get (). )} @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 ())} documento de retorno} @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) {Document document = documentCodec.decode (reader, decoderContext) 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}}

Agora faremos uso de um CodecProvider para vinculá-lo à classe Fruit já presente.

pacote 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 public class FruitCodecProvider implementa CodecProvider {@Override public Codec get (Class clazz, CodecRegistry registry) {if (clazz == Fruit.class) {return (Codec) new FruitCodec ()} return null}}

Prosseguindo com a Etapa 7.

como escrever alerta em javascript

Etapa # 7: Código Final

O código final para este aplicativo será parecido com isto.

pacote 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 ())}} finally {cursor.close ()} retornar lista} public void add (Fruit fruit) {getCollection (). insertOne (fruit)} private MongoCollection getCollection ( ) {return mongoClient.getDatabase ('fruit'). getCollection ('fruit', Fruit.class)}}

Conclusão

Agora você sabe como configurar e usar o cliente MongoDB em seu sistema. Experimente estes códigos em seu sistema e conte-nos sua experiência.

Resumo do Artigo

Aprenda tudo sobre o cliente MongoDB e como você pode configurá-lo em seu sistema para vários usos. Leia para saber mais.

Com isso, chegamos ao fim do ' Cliente MongoDB ' artigo.