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