MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Всичко, което трябва да знаете за MongoDB Client

Ако сте използвали някаква форма на система за управление на релационна база данни от известно време, вероятно сте се сблъсквали с името MongoDB. Въведена за първи път през 2009 г., днес mongoDb е една от най-популярните системи за управление на релационни бази данни в индустрията. Основната причина за безумната му популярност въпреки наличието на по-стари мениджъри на софтуер за релационни бази данни, като MySql, присъстващи на пазара, е широкият брой числа и голяма гъвкавост, която носи на масата. Използването на MongoDB елиминира много нужди, една от които е необходимостта от създаване на база данни и дефиниране на типа данни всеки път, когато се стартира нов проект. Дневният ред на статията за клиента на MongoDB:

  • Предварителни условия за MongoDB Client
  • Създаване на проекта в Maven
  • Добавяне на първата ви услуга за почивка на JSON
  • Конфигуриране на базата данни MongoDB
  • Изпълнение на конфигурираната база данни MongoDB
  • Изработване на предния край
  • Опростяване на клиента MongoDB с помощта на BSON кодек
  • Краен код

Но за да постигнете максимална функционалност от MongoDB, човек трябва да познава клиента MongoDB и в тази статия ще обсъдим точно това.

Предварителни условия за MongoDB Client

За да изпълните тази статия изцяло, ще трябва първо да изпълните следните предпоставки.

В системата вече има IDE.
Java Development Kit или JDK версия 1.8 и по-нова, инсталирани с правилно конфигуриран JAVA_HOME.
инсталиран Docker или MongoDB.
Apache Maven версия 3.5.3 и по-нова.

Архитектурата, която създадохме и използвахме в това ръководство, е една от най-простите. Когато се изпълни, потребителят може лесно да добавя данни и елементи в списък, след което той автоматично ще се актуализира в базата данни.

Заедно с това сме се уверили, че цялата комуникация между данните и сървъра е в 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="/fruits" -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 (Име на низ, описание на низ) {this.name =name;this.description =description;}public String getName() {return name;}public void setName(String name) {this.name =name;}public String getDescription( ) {връщане на описание;}public void setDescription(описание на низ) {this.description =description;}@Overridepublic boolean equals(Object obj) {if (!(obj instanceof Fruit)) {return false;}Fruit other =(Fruit) obj;return Objects.equals(other.name, this.name);}@Overridepublic int hashCode() {връщане на Objects.hash(this.name);}}

С горния пример първо създадохме плода, който по-късно ще бъде използван в програмата.

След това трябва да създадем файла org.acme.rest.json.FruitService, който ще бъде потребителският слой на нашето приложение. За да направите това, използвайте кода по-долу.

package org.acme.rest.json;import com.mongodb.client.MongoClient;import com.mongodb.client.MongoCollection;import com.mongodb.client.MongoCursor;import org.bson.Document;importprijavasex.enter .context.ApplicationScoped;импорт javax.inject.Inject;импорт java.util.ArrayList;импорт java.util.List;@ApplicationScopedpublic клас FruitService {@Inject MongoClient mongoClient;public List list(){List list<> Arrow( );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);}} накрая {cursor.close();}return list;}public void add(Fruit плод){Document document =new Document().append("name", fruit.getName()).append("description", fruit.getDescription());getCollection().insertOne(document);}private MongoCollection getCollection (){return mongoClient.getDatabase("fruit").getCollection ("fruit");}}Сега трябва да редактираме класа org.acme.rest.json.FruitResource, за да отговаря на нашите нужди. За да направите това, използвайте кода по-долу.@Path("/fruits")@Produces(MediaType.APPLICATION_JSON)@Consumes(MediaType.APPLICATION_JSON)обществен клас FruitResource {@Inject FruitService fruitService;@GETpublic List list() {retur fruitService.list();}@POSTpublic List add(Fruit fruit) {fruitService.add(fruit);return list();}}

Продължаваме със Стъпка 3.

Стъпка №3:​​Конфигуриране на базата данни mongoDb

Синтаксисът, както и стандартният код за конфигуриране на базата данни mongoDb са посочени по-долу.

# конфигурирайте клиента mongoDB за набор от реплика от два nodesquarkus.mongodb.connection-string =mongodb://mongo1:27017,mongo2:27017

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

# конфигурирайте клиента mongoDB за набор от реплика от два nodesquarkus.mongodb.connection-string =mongodb://localhost:27017

Продължаваме със Стъпка 4.

Стъпка #4:Стартиране на конфигурираната база данни MongoDB

Следващата стъпка е да стартираме базата данни MongoDB, която току-що създадохме. За да направите това, използвайте кода по-долу.

docker run -ti --rm -p 27017:27017 mongo: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.injectport javaxed; .Inject;import java.util.List;import java.util.concurrent.CompletionStage;@ApplicationScopedpublic class ReactiveFruitService {@InjectReactiveMongoClient mongoClient;public CompletionStage list(){return getCollection(map).> {Fruit fruit =new Fruit();fruit.setName(doc.getString("name"));fruit.setDescription(doc.getString("description"));връщане на плодове;}).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.*;имп ort javax.ws.rs.core.MediaType;импорт java.util.List;импорт java.util.concurrent.CompletionStage;@Path("/reactive_fruits")@Produces(MediaType.APPLICATION_JSON)@Consumes(MediaType.APPLICATION)public_JSON клас ReactiveFruitResource {@Inject ReactiveFruitService fruitService;@GETpublic CompletionStage list() {return fruitService.list();}@POSTpublic CompletionStage add(Fruit fruit) {fruitService.add(fruit);return); }}

В горния пример използваме реактивен mongoDb клиент, за да улесним формирането на предния край.

Продължаваме със Стъпка 6.

Стъпка #6:Опростяване на клиента mongoDb с помощта на кодек BSON

За да направите това, използвайте кода по-долу.

пакет 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 внедрява CollectibleCodec {частен окончателен кодек documentCodec;public FruthisCodec() FruthisCodec() 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 generateIdIfAbsentFromDocument(Fru документ) {if (!documentHasId(document)) {document.setId(UUID.randomUUID().toString());}връщане на документ;}@Overridepublic булев documentHasId(Fruit docu ment) {return document.getId() !=null;}@Overridepublic BsonValue getDocumentId(Fruit document) {връщане на нов BsonString(document.getId());}@Overridepublic Fruit decode(BsonReader reader =DecoderContext decoder) {DocumentContext decoder 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"));връщане на плодове;}}

Сега ще използваме CodecProvider, за да свържем това с вече наличния клас Fruit.

пакет 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 внедрява CodecProvider {@Overridepublic Codec get(Class clazz, CodecRegistry registry) {if (clazz ==Fruit.class) {връщане (Codec) new FruitCodec();};}връщане /предварително> 

Продължаваме със Стъпка 7.

Стъпка №7:Окончателен код

Окончателният код за това приложение ще изглежда така.

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;ApplicationScope .inject.Inject;import java.util.ArrayList;import java.util.List;@ApplicationScopedpublic class CodecFruitService {@Inject MongoClient mongoClient;public List list(){List list =new ArrayList<>();MongoCursor cursor(cursor getCursor ).find().iterator();опитайте {while (cursor.hasNext()) {list.add(cursor.next());}} накрая {cursor.close();}return list;}public void add (Fruit fruit){getCollection().insertOne(fruit);}private MongoCollection getCollection(){return mongoClient.getDatabase("fruit").getCollection("fruit", Fruit.class);}}

Заключение

Сега знаете как да конфигурирате и използвате клиента MongoDB във вашата система. Продължете и опитайте тези кодове във вашата система и ни уведомете за вашия опит.

Резюме на статия

Научете всичко за клиента MongoDB и как можете да конфигурирате същия във вашата система за различни приложения. Прочетете, за да научите повече.

С това стигаме до края на MongoDB клиент статия.

Предстоящи партиди за учебен курс за сертифициране на MongoDB
Име на курса Дата
Курс за обучение за сертифициране MongoDB

Курсът започва на 4 юни 2022 г.

4 юни

SAT&SUN (партида през уикенда)
Преглед на подробностите
Курс за обучение за сертифициране MongoDB

Курсът започва на 6 август 2022 г.

6 август

SAT&SUN (партида за уикенда)
Преглед на подробностите

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:Как да разберете дали полето на масива съдържа елемент?

  2. Изпълняване на MongoDB с Ops Manager

  3. Как да моделираме система за гласуване с харесвания с MongoDB

  4. Mongodb Aggregation Framework | Групиране върху множество стойности?

  5. Mongoose, CastError:Прехвърляне към масив не бе успешно за стойност при опит за запазване на модел, който съдържа модел