Lahat ng Kailangan Mong Malaman Tungkol sa MongoDB Client



Magbibigay sa iyo ang artikulong ito ng isang detalyado at komprehensibong kaalaman tungkol sa MongoDB Client sa lahat ng mga tampok at Paggamit nito.

Kung ikaw ay naging anumang uri ng pahiwatig na sistema ng pamamahala ng database sa loob ng ilang oras ngayon, malamang na nahanap mo ang pangalan ng . Una nang ipinakilala sa taong 2009, ngayon ang mongoDb ay isa sa pinakatanyag na pamanggit na mga sistema ng pamamahala ng database sa industriya. Ang pangunahing dahilan sa likod ng pagkabaliw nito katanyagan sa kabila ng pagkakaroon ng mga mas matandang pamanggit na software manager ng database tulad ng MySql na nasa merkado ay ang malawak na bilang at mahusay na kakayahang magamit ng maraming bagay na dinala nito sa talahanayan. Tinatanggal ng paggamit ng MongoDB ang maraming mga pangangailangan, isa sa kanila ay ang pangangailangan na lumikha ng isang database at pagtukoy sa uri ng data sa tuwing nagsisimula ang isang bagong proyekto. Agenda ng artikulo ng kliyente ng MongoDB:





Ngunit upang makamit ang maximum na pag-andar sa labas ng MongoDB, kailangang pamilyar ang isang kliyente sa MongoDB at sa artikulong ito, tatalakayin lamang namin iyon.

Mga Pangangailangan para sa MongoDB Client

Upang ganap na maisagawa ang artikulong ito, kakailanganin mo munang matugunan ang mga sumusunod na kinakailangan.



Magkaroon na ng isang IDE sa iyong system.
Ang Java Development Kit o JDK bersyon 1.8 at mas mataas na naka-install na may maayos na na-configure na JAVA_HOME.
Naka-install ang Docker o MongoDB.
Apache Maven bersyon 3.5.3 at mas mataas.

Ang arkitekturang nilikha namin at ginamit sa gabay na ito ay isa sa pinakasimpleng. Kapag naisakatuparan ang gumagamit ay madaling magdagdag ng data at mga elemento sa isang listahan, pagkatapos nito ay awtomatiko itong maa-update sa database.

MongoDB Client Logo



ano ang halimbawa sa java

Kasama nito, tinitiyak namin na ang lahat ng komunikasyon sa pagitan ng data at server ay nasa JSON at lahat ng data ay nakaimbak sa MongoDB.

Nagsisimula

Upang makapagsimula sa proyektong ito, sundin ang mga hakbang na nakabalangkas sa ibaba.

Hakbang # 1: Paglikha ng proyekto sa Maven

Ang unang hakbang ay palaging lumikha ng isang bagong proyekto at upang magawa ito, gamitin ang sumusunod na code.

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

Kapag pinatakbo mo ang utos sa itaas, mai-import ng IDE ang mga JSON-B, MongoDb pati na rin ang mga kliyente ng RESTEasy / JAX-RS papunta sa iyong system.

Nagpapatuloy sa Hakbang 2.

Hakbang # 2: Pagdaragdag ng iyong kauna-unahang serbisyo sa pamamahinga ng JSON

Upang magawa ito, gamitin ang code sa ibaba. package org.acme.rest.json import java.util.Objects public class na Prutas {pribadong pangalan ng String pribadong paglalarawan ng String 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 katumbas ng boolean (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)}}

Sa halimbawa sa itaas, nilikha muna namin ang Prutas na magagamit sa paglaon sa programa.

Susunod na kailangan namin upang likhain ang file na org.acme.rest.json.FruitService na magiging layer ng gumagamit ng aming application. Upang magawa ito, gamitin ang code sa ibaba.

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 public class FruitService {@Inject MongoClient mongoClient public List list () {List list = new ArrayList () MongoCursor cursor = getCollection (). Find (). Iterator ( ) subukan ang {habang (cursor.hasNext ()) {Dokumento ng dokumento = cursor.next () Prutas na prutas = bagong Prutas () prutas.setName (document.getString ('pangalan')) fruit.setDescription (document.getString ('paglalarawan ')) list.add (prutas)}} sa wakas {cursor.close ()} listahan ng pagbalik} pampublikong walang bisa na idagdag (Prutas na prutas) {Dokumento ng dokumento = bagong Dokumento (). magdagdag (' pangalan ', fruit.getName ()) .append ('description', fruit.getDescription ()) getCollection (). insertOne (dokumento)} pribadong MongoCollection getCollection () {return mongoClient.getDatabase ('fruit'). getCol lection ('prutas')}} Ngayon ay kailangan naming i-edit ang org.acme.rest.json.FruitResource na klase upang umangkop sa aming mga pangangailangan. Upang magawa ito, gamitin ang code sa ibaba. @Path ('/ fruit') @Produces (MediaType.APPLICATION_JSON) @Consume (MediaType.APPLICATION_JSON) pampublikong klase FruitResource {@Inject FruitService fruitService @GET listahan ng pampublikong Listahan () {return fruitService.list ()} @POST public List add (Prutas na prutas) {fruitService.add (prutas) listahan ng pagbalik ()}}

Pagpapatuloy sa Hakbang 3.

Hakbang # 3: Pag-configure ng mongoDb database

Ang syntax pati na rin ang karaniwang code para sa pag-configure ng mongoDb database ay ibinigay sa ibaba.

# i-configure ang mongoDB client para sa isang replica na hanay ng dalawang node quarkus.mongodb.connection-string = mongodb: // mongo1: 27017, mongo2: 27017

Sa aming kaso, gagamitin namin ang sumusunod na code upang mai-configure ang database.

# i-configure ang mongoDB client para sa isang hanay ng replica ng dalawang node quarkus.mongodb.connection-string = mongodb: // localhost: 27017

Nagpapatuloy sa Hakbang 4.

Hakbang # 4: Pagpapatakbo ng naka-configure na MongoDB database

Ang susunod na hakbang ay upang patakbuhin ang MongoDB database na nilikha lamang namin. Upang magawa ito, gamitin ang code sa ibaba.

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

Pagpapatuloy sa Hakbang 5.

Hakbang # 5: Ginagawa ang front end

Ngayon na tapos na ang lahat ng gawain sa backend ng application, tingnan natin ang code na ginamit upang mai-code ang front end ng aming application.

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.I-import ang java.util.List i-import ang 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 ('pangalan')) fruit.setDescription (doc.getString ('paglalarawan')) ibalik ang prutas}). toList (). patakbuhin ()} pampublikong AdditionStage idagdag (Prutas na prutas) {Dokumento ng dokumento = bagong Dokumento () .append ('name', fruit.getName ()) .append ('description', fruit.getDescription ()) return getCollection (). insertOne (document)} pribadong ReactiveMongoCollection getCollection () {return mongoClient.getDatabase ('fruit' ) .getCollection ('fruit')}} package org.acme.rest.json import javax.inject. Mag-import ng 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) pampublikong klase ReactiveFruitResource { @Inject ReactiveFruitService fruitService @GET pampublikong listahan ng Pagkumpleto ng Estado () {return fruitService.list ()} @POST pampublikong PagkumpletoStage add (Prutas na prutas) {fruitService.add (prutas) listahan ng pagbalik ()}}

Sa halimbawa sa itaas, gumagamit kami ng isang reaktibo mongoDb client upang mapadali ang pagbuo ng front end.

Pagpapatuloy sa Hakbang 6.

Hakbang # 6: Pinapasimple ang mongoDb client gamit ang BSON codec

Upang magawa ito, gamitin ang code sa ibaba.

package org.acme.rest.json.codec import com.mongodb.MongoClient import org.acme.rest.json.Food 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 pampublikong klase na FruitCodec ay nagpapatupad ng CollectibleCodec {pribadong panghuling dokumento ng CodecCodec public FruitCodec () {this.documentCodec = MongoClient.getDefault.Codec (Document). )} @Override public void encode (manunulat ng BsonWriter, Prutas na prutas, EncoderContext encoderContext) {Document doc = new Document () doc.put ('name', fruit.getName ()) doc.put ('description', fruit.getDescription ()) documentCodec.encode (manunulat, doc, encoderContext)} @Override public Class getEncoderClass () {return Fruit.class} @Override public Fruit generateIdIfAbsentFromDocument (Fruit document) {if (! documentHasId (dokumento)) {document.setId ( UUID.randomUUID (). ToString ())} ibalik ang dokumento} @Override public boolean documentHasId ( Dokumentong prutas) {return document.getId ()! = Null} @Override public BsonValue getDocumentId (Fruit document) {return new BsonString (document.getId ())} @Orride public Fruit decode (BsonReader reader, DecoderContext decoderContext) {Dokumento ng dokumento = documentCodec.decode (reader, decoderContext) Prutas na prutas = bagong Prutas () kung (document.getString ('id')! = null) {fruit.setId (document.getString ('id'))} fruit.setName (dokumento .getString ('pangalan')) fruit.setDescription (document.getString ('paglalarawan')) ibalik ang prutas}}

Ngayon ay gagamitin namin ang isang CodecProvider upang maiugnay ito sa klase ng Prutas na naroroon.

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 klase ng publiko Ipinatupad ng FruitCodecProvider ang CodecProvider {@Override public Codec get (Class clazz, CodecRegistry registry) {if (clazz == Fruit.class) {return (Codec) bagong FruitCodec ()} ibalik ang null}}

Nagpapatuloy sa Hakbang 7.

Hakbang # 7: Pangwakas na Code

Ang pangwakas na code para sa application na ito, ay magmumukhang ganito.

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 public class CodecFruitService {@Inject MongoClient mongoClient public List list () {List list = new ArrayList () MongoCursor cursor = getCollection (). Find (). Iterator () subukan {habang (cursor .hasNext ()) {list.add (cursor.next ())}} sa wakas {cursor.close ()} ibalik ang listahan} pampublikong walang bisa na idagdag (Prutas na prutas) {getCollection (). insertOne (prutas)} pribadong MongoCollection getCollection ( ) {return mongoClient.getDatabase ('fruit'). getCollection ('fruit', Fruit.class)}}

Konklusyon

Ngayon alam mo kung paano i-configure at gamitin ang MongoDB client sa iyong system. Sige at subukan ang mga code na ito sa iyong system at ipaalam sa amin ang iyong karanasan.

Buod ng Artikulo

Alamin ang lahat tungkol sa MongoDB client at kung paano mo mai-configure ang pareho sa iyong system para sa iba't ibang paggamit. Basahin pa upang malaman ang higit pa.

Sa pamamagitan nito, nakarating tayo sa katapusan ng ' MongoDB Client ' artikulo