sql >> Databáze >  >> NoSQL >> MongoDB

Vše, co potřebujete vědět o klientovi MongoDB

Pokud již nějakou dobu používáte jakoukoli formu systému správy relačních databází, pravděpodobně jste se setkali s názvem MongoDB. MongoDb, který byl poprvé představen v roce 2009, je dnes jedním z nejpopulárnějších systémů pro správu relačních databází v oboru. Hlavním důvodem jeho šílené popularity navzdory přítomnosti starších softwarových manažerů relačních databází, jako je MySql na trhu, je široký počet a velká všestrannost, kterou přináší. Použití MongoDB eliminuje mnoho potřeb, jednou z nich je potřeba vytvořit databázi a definovat datový typ pokaždé, když je spuštěn nový projekt. Agenda článku klienta MongoDB:

  • Předpoklady pro klienta MongoDB
  • Vytvoření projektu na Maven
  • Přidání vaší úplně první odpočinkové služby JSON
  • Konfigurace databáze MongoDB
  • Spuštění nakonfigurované databáze MongoDB
  • Vytvoření frontendu
  • Zjednodušení klienta MongoDB pomocí kodeku BSON
  • Konečný kód

Abyste však z MongoDB dosáhli maximální funkčnosti, musíte být obeznámeni s klientem MongoDB a v tomto článku budeme diskutovat právě o tom.

Předpoklady pro klienta MongoDB

Aby byl tento článek celý, musíte nejprve splnit následující předpoklady.

Mějte ve svém systému IDE.
Java Development Kit nebo JDK verze 1.8 a vyšší nainstalovaná se správně nakonfigurovanou JAVA_HOME.
Nainstalovaný Docker nebo MongoDB.
Apache Maven verze 3.5.3 a vyšší.

Architektura, kterou jsme vytvořili a použili v této příručce, je jednou z nejjednodušších. Po spuštění může uživatel snadno přidat data a prvky do seznamu, po kterém se automaticky aktualizuje v databázi.

Spolu s tím jsme zajistili, že veškerá komunikace mezi daty a serverem probíhá v JSON a všechna data jsou uložena v MongoDB.

Začínáme

Abyste mohli začít s tímto projektem, postupujte podle kroků uvedených níže.

Krok č. 1:Vytvoření projektu na Maven

Prvním krokem je vždy vytvoření nového projektu a k tomu použijte následující kód.

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"

Když spustíte výše uvedený příkaz, IDE naimportuje do vašeho systému klienty JSON-B, MongoDb a také RESTEasy/JAX-RS.

Pokračujte krokem 2.

Krok č. 2:Přidání vaší úplně první odpočinkové služby JSON

K tomu použijte níže uvedený kód.package org.acme.rest.json;import java.util.Objects;public class Fruit {private String name;private String description;public Fruit() {}public Fruit (Název řetězce, Popis řetězce) {this.name =název;this.description =description;}public String getName() {return name;}public void setName(název řetězce) {this.name =name;}public String getDescription( ) {return description;}public void setDescription(String description) {this.description =description;}@Overridepublic boolean equals(Object obj) {if (!(obj instanceof Fruit)) {return false;}Ovoce jiné =(Ovoce) obj;return Objects.equals(other.name, this.name);}@Overridepublic int hashCode() {return Objects.hash(this.name);}}

Ve výše uvedeném příkladu jsme nejprve vytvořili Fruit, který bude později použit v programu.

Dále musíme vytvořit soubor org.acme.rest.json.FruitService, který bude uživatelskou vrstvou naší aplikace. Chcete-li to provést, použijte níže uvedený kód.

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;@ApplicationScopedpublic class FruitService {@Inject MongoClient mongoClient;public List list(){List list =new ArrayList<>( );Kurzor MongoCursor =getCollection().find().iterator();try {while (cursor.hasNext()) {Dokument dokumentu =kurzor.next();Ovoce ovoce =new Fruit();fruit.setName(document .getString("name"));fruit.setDescription(document.getString("popis"));list.add(ovoce);}} nakonec {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("ovoce").getCollection ("fruit");}}Nyní musíme upravit třídu org.acme.rest.json.FruitResource tak, aby vyhovovala našim potřebám. Chcete-li to provést, použijte níže uvedený kód.@Path("/fruits")@Produces(MediaType.APPLICATION_JSON)@Consumes(MediaType.APPLICATION_JSON)public class FruitResource {@Inject FruitService fruitService;@GETpublic List list() {return fruitService.list();}@POSTpublic List add(Fruit fruit) {fruitService.add(fruit);return list();}}

Pokračujte krokem 3.

Krok č. 3:Konfigurace databáze mongoDb

Syntaxe i standardní kód pro konfiguraci databáze mongoDb jsou uvedeny níže.

# nakonfigurujte klienta mongoDB pro sadu replik dvou nodesquarkus.mongodb.connection-string =mongodb://mongo1:27017,mongo2:27017

V našem případě použijeme ke konfiguraci databáze následující kód.

# nakonfigurujte klienta mongoDB pro sadu replik dvou nodesquarkus.mongodb.connection-string =mongodb://localhost:27017

Pokračujte krokem 4.

Krok #4:Spuštění nakonfigurované databáze MongoDB

Dalším krokem je spuštění databáze MongoDB, kterou jsme právě vytvořili. Chcete-li to provést, použijte níže uvedený kód.

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

Pokračujte krokem 5.

Krok č. 5:Vytvoření frontendu

Nyní, když je veškerá práce na backendu aplikace hotová, pojďme se podívat na kód používaný ke kódování frontendu naší aplikace.

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;@ApplicationScopedpublic class ReactiveFruitService {@InjectReactiveMongoClient mongoClient;public CompletionStage seznam(){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);}soukromá ReactiveMongoCollection getCollection(){return mongoClient.getDatabase("ovoce").getCollection("ovoce");}}balíček org.acme.rest.json;import javax.inject.Inject;import javax. ws.rs.*;imp ort 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) class ReactiveFruitResource {@Inject ReactiveFruitService fruitService;@GETpublic CompletionStage seznam() {return fruitService.list();}@POSTpublic CompletionStage add(Fruit fruit) {fruitService.add(ovoce);vrácení seznamu(); }}

Ve výše uvedeném příkladu využíváme reaktivního klienta mongoDb k usnadnění vytvoření frontendu.

Pokračujte krokem 6.

Krok #6:Zjednodušení klienta mongoDb pomocí kodeku BSON

Chcete-li to provést, použijte níže uvedený kód.

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;veřejná třída FruitCodec implementuje CollectibleCodec {private final Codec documentCodec;public FruitCodec() {this. documentCodec =MongoClient.getDefaultCodecRegistry().get(Document.class);}@Overridepublic 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);}@Overridepublic Class getEncoderClass() {return Fruit.class;}@Overridepublic Fruit generationIdIfAbsentFromDocument(Fruit document) {if (!documentHasId(document)) {document.setId(UUID.randomUUID().toString());}return document;}@Overridepublic booleovský dokumentHasId(Fruit docu ment) {return document.getId() !=null;}@Overridepublic BsonValue getDocumentId(Fruit document) {return new BsonString(document.getId());}@Overridepublic Fruit decode (čtečka BsonReader, DecoderContext decumentContext) {Document decoderContext documentCodec.decode(reader, decoderContext);Fuit fruit =new Fruit();if (document.getString("id") !=null) {fruit.setId(document.getString("id"));}fruit.setName (document.getString("název"));fruit.setDescription(document.getString("popis"));return fruit;}}

Nyní použijeme CodecProvider k propojení s již existující třídou Fruit.

balíček 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 implementuje CodecProvider {@Overridepublic Codec get(Class clazz, CodecRegistry registry) {if (clazz ==Fruit.class) {return (Codec) new FruitCodec();}return null;}} 

Pokračujte krokem 7.

Krok č. 7:Konečný kód

Konečný kód pro tuto aplikaci bude vypadat nějak takto.

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;@ApplicationScopedpublic class CodecFruitService {@Inject MongoClient mongoClient;public List list(){List list =new ArrayList<>();MongoCursor kurzor =getCollection( ).find().iterator();zkuste {while (cursor.hasNext()) {list.add(cursor.next());}} nakonec {cursor.close();}return list;}public void add (Fruit fruit){getCollection().insertOne(fruit);}soukromá MongoCollection getCollection(){return mongoClient.getDatabase("fruit").getCollection("fruit", Fruit.class);}}

Závěr

Nyní víte, jak nakonfigurovat a používat klienta MongoDB ve vašem systému. Neváhejte a vyzkoušejte tyto kódy ve svém systému a dejte nám vědět o svých zkušenostech.

Shrnutí článku

Zjistěte vše o klientovi MongoDB a o tom, jak jej můžete nakonfigurovat ve svém systému pro různá použití. Čtěte dále a dozvíte se více.

Tím se dostáváme na konec Klient MongoDB článek.

Nadcházející dávky pro certifikační kurz MongoDB
Název kurzu Datum
Certifikační kurz MongoDB

Kurz začíná 4. června 2022

4. června

SAT&SUN (víkendová dávka)
Zobrazit podrobnosti
Certifikační kurz MongoDB

Kurz začíná 6. srpna 2022

6. srpna

SAT&SUN (víkendová dávka)
Zobrazit podrobnosti

  1. Sidekiq nenachází záznamy pro Rails Active Job

  2. Proč potřebujeme „arbitera“ v replikaci MongoDB?

  3. nainstalovat mongoDB (podřízený proces selhal, ukončen s chybou číslo 100)

  4. Jak získat krátký název měsíce v SQL