Tout ce que vous devez savoir sur le client MongoDB

Cet article vous fournira une connaissance détaillée et complète du client MongoDB avec toutes ses fonctionnalités et utilisations.

Si vous utilisez une forme quelconque de système de gestion de base de données relationnelle depuis un certain temps maintenant, vous avez probablement rencontré le nom de . Lancé pour la première fois en 2009, mongoDb est aujourd'hui l'un des systèmes de gestion de bases de données relationnelles les plus populaires du secteur. La raison principale de sa popularité folle malgré la présence d'anciens gestionnaires de logiciels de bases de données relationnelles comme MySql présents sur le marché est le grand nombre et la grande polyvalence qu'il apporte à la table. L'utilisation de MongoDB élimine de nombreux besoins, l'un d'entre eux étant le besoin de créer une base de données et de définir le type de données à chaque fois qu'un nouveau projet est démarré. Agenda de l'article client MongoDB:





Mais pour obtenir le maximum de fonctionnalités de MongoDB, il faut se familiariser avec le client MongoDB et dans cet article, nous en discuterons.

Prérequis pour le client MongoDB

Pour que cet article soit entièrement rédigé, vous devez d'abord remplir les conditions préalables suivantes.



Avoir un IDE déjà présent dans votre système.
Kit de développement Java ou JDK version 1.8 et supérieur installé avec JAVA_HOME correctement configuré.
Docker ou MongoDB installé.
Apache Maven version 3.5.3 et supérieure.

L'architecture que nous avons créée et utilisée dans ce guide est l'une des plus simples. Une fois exécuté, l'utilisateur peut facilement ajouter des données et des éléments dans une liste, après quoi il sera automatiquement mis à jour dans la base de données.

Logo du client MongoDB



Parallèlement à cela, nous nous sommes assurés que toutes les communications entre les données et le serveur sont en JSON et que toutes les données sont stockées dans MongoDB.

Commencer

différence entre la classe et l'interface en java

Pour démarrer avec ce projet, suivez les étapes décrites ci-dessous.

Étape # 1: Création du projet sur Maven

La première étape consiste toujours à créer un nouveau projet et pour ce faire, utilisez le code suivant.

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

Lorsque vous exécutez la commande ci-dessus, l'EDI importera les clients JSON-B, MongoDb ainsi que RESTEasy / JAX-RS sur votre système.

Passez à l'étape 2.

Étape # 2: Ajout de votre tout premier service de repos JSON

Pour ce faire, utilisez le code ci-dessous. 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)}}

Avec l'exemple ci-dessus, nous avons d'abord créé le Fruit qui sera ensuite utilisé dans le programme.

Ensuite, nous devons créer le fichier org.acme.rest.json.FruitService qui sera la couche utilisateur de notre application. Pour ce faire, utilisez le code ci-dessous.

package 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 classe publique 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 (fruit)}} finally {cursor.close ()} return list} public void add (Fruit fruit) {Document document = new Document () .append (' name ', fruit.getName ()) .append ('description', fruit.getDescription ()) getCollection (). insertOne (document)} private MongoCollection getCollection () {return mongoClient.getDatabase ('fruit'). getCol lection ('fruit')}} Nous devons maintenant éditer la classe org.acme.rest.json.FruitResource en fonction de nos besoins. Pour ce faire, utilisez le code ci-dessous. @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 (Fruit fruit) {fruitService.add (fruit) return list ()}}

Passez à l'étape 3.

Étape # 3: Configuration de la base de données mongoDb

La syntaxe ainsi que le code standard pour configurer la base de données mongoDb sont indiqués ci-dessous.

# configurer le client mongoDB pour un jeu de répliques de deux nœuds quarkus.mongodb.connection-string = mongodb: // mongo1: 27017, mongo2: 27017

Dans notre cas, nous utiliserons le code suivant pour configurer la base de données.

# configurer le client mongoDB pour un jeu de répliques de deux nœuds quarkus.mongodb.connection-string = mongodb: // localhost: 27017

Passez à l'étape 4.

Étape # 4: Exécution de la base de données MongoDB configurée

L'étape suivante consiste à exécuter la base de données MongoDB que nous venons de créer. Pour ce faire, utilisez le code ci-dessous.

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

Passez à l'étape 5.

Étape n ° 5: Faire le frontal

Maintenant que tout le travail au niveau du backend de l'application est terminé, jetons un œil au code utilisé pour coder le front-end de notre application.

qu'est-ce que le mélange de données dans un tableau
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 classe publique 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 publique ReactiveFruitResource { @Inject ReactiveFruitService fruitService @GET public CompletionStage list () {return fruitService.list ()} @POST public CompletionStage add (Fruit fruit) {fruitService.add (fruit) return list ()}}

Dans l'exemple ci-dessus, nous utilisons un client mongoDb réactif pour faciliter la formation du frontal.

Passez à l'étape 6.

Étape # 6: Simplification du client mongoDb à l'aide du codec BSON

Pour ce faire, utilisez le code ci-dessous.

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 classe publique FruitCodec implémente CollectibleCodec {codec final privé documentCodec public FruitCodec () {this.documentCodec = MongoClient.getDefaultCodecRegistry (). get (Document). )} @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 (écrivain, doc, encoderContext)} @Override public Class getEncoderClass () {return Fruit.class} @Override public Fruit generateIdIfAbsentFromDocument (Fruit document) {if (! documentHasId (document)) {document.setId ( UUID.randomUUID (). ToString ())} retour du 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 (lecteur BsonReader, 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 ('nom')) fruit.setDescription (document.getString ('description')) return fruit}}

Nous allons maintenant utiliser un CodecProvider pour le lier à la classe Fruit déjà présente.

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

Passez à l'étape 7.

tri du tableau c ++ croissant

Étape # 7: Code final

Le code final de cette application ressemblera à ceci.

package 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 classe publique 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 ()} return list} public void add (Fruit fruit) {getCollection (). insertOne (fruit)} private MongoCollection getCollection ( ) {return mongoClient.getDatabase ('fruit'). getCollection ('fruit', Fruit.class)}}

Conclusion

Vous savez maintenant comment configurer et utiliser le client MongoDB dans votre système. Allez-y, essayez ces codes dans votre système et faites-nous part de votre expérience.

Résumé de l'article

Apprenez tout sur le client MongoDB et comment vous pouvez le configurer dans votre système pour diverses utilisations. Lisez la suite pour en savoir plus.

Avec cela, nous arrivons à la fin de la ' Client MongoDB ' article.