यदि आप पिछले कुछ समय से रिलेशनल डेटाबेस मैनेजमेंट सिस्टम के किसी भी रूप में हैं, तो आप शायद MongoDB के नाम से परिचित हो गए हैं। पहली बार वर्ष 2009 में पेश किया गया था, आज mongoDb उद्योग में सबसे लोकप्रिय रिलेशनल डेटाबेस प्रबंधन प्रणालियों में से एक है। बाजार में मौजूद MySql जैसे पुराने रिलेशनल डेटाबेस सॉफ्टवेयर मैनेजरों की मौजूदगी के बावजूद इसकी पागल लोकप्रियता के पीछे मुख्य कारण यह है कि यह तालिका में व्यापक संख्या और महान बहुमुखी प्रतिभा लाता है। MongoDB का उपयोग कई जरूरतों को समाप्त करता है, उनमें से एक डेटाबेस बनाने और हर बार एक नई परियोजना शुरू होने पर डेटा प्रकार को परिभाषित करने की आवश्यकता होती है। MongoDB क्लाइंट लेख का एजेंडा:
- MongoDB क्लाइंट के लिए आवश्यक शर्तें
- मावेन पर प्रोजेक्ट बनाना
- अपनी पहली JSON बाकी सेवा जोड़ना
- MongoDB डेटाबेस को कॉन्फ़िगर करना
- कॉन्फ़िगर किए गए MongoDB डेटाबेस को चलाना
- फ्रंट एंड बनाना
- BSON कोडेक का उपयोग करके MongoDB क्लाइंट को सरल बनाना
- अंतिम कोड
लेकिन MongoDB से अधिकतम कार्यक्षमता प्राप्त करने के लिए, किसी को MongoDB क्लाइंट से परिचित होने की आवश्यकता है और इस लेख में, हम बस उसी पर चर्चा करेंगे।
MongoDB क्लाइंट के लिए आवश्यक शर्तें
इस लेख को पूरी तरह से पूरा करने के लिए, आपको पहले निम्नलिखित पूर्वापेक्षाओं को पूरा करना होगा।
आपके सिस्टम में एक IDE पहले से मौजूद है।
जावा डेवलपमेंट किट या JDK संस्करण 1.8 और इसके बाद के संस्करण JAVA_HOME के साथ ठीक से कॉन्फ़िगर किए गए हैं।
डॉकर या मोंगोडीबी स्थापित।
अपाचे मावेन संस्करण 3.5.3 और इसके बाद के संस्करण।
इस गाइड में हमने जो आर्किटेक्चर बनाया है और उसका उपयोग किया है, वह सबसे सरल में से एक है। निष्पादित होने पर उपयोगकर्ता सूची में डेटा और तत्वों को आसानी से जोड़ सकता है, जिसके बाद यह स्वचालित रूप से डेटाबेस में अपडेट हो जाएगा।
इसके साथ ही, हमने यह सुनिश्चित किया है कि डेटा और सर्वर के बीच सभी संचार JSON में है और सभी डेटा MongoDB में संग्रहीत है।
आरंभ करना
इस परियोजना के साथ आरंभ करने के लिए, नीचे दिए गए चरणों का पालन करें।
चरण #1:मावेन पर प्रोजेक्ट बनाना
पहला कदम हमेशा एक नया प्रोजेक्ट बनाना होता है और ऐसा करने के लिए, निम्न कोड का उपयोग करें।
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 बाकी सेवा जोड़ना
In order to do this, use the code below. 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); } }
उपरोक्त उदाहरण के साथ, हमने पहले फल बनाया है जिसे बाद में कार्यक्रम में उपयोग किया जाएगा।
इसके बाद हमें 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; 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(); 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").getCollection("fruit"); } } Now we need to edit the org.acme.rest.json.FruitResource class to suit our needs. In order to do this, use the code below. @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(); } }
चरण 3 के साथ आगे बढ़ना।
चरण #3:mongoDb डेटाबेस को कॉन्फ़िगर करना
mongoDb डेटाबेस को कॉन्फ़िगर करने के लिए सिंटैक्स के साथ-साथ मानक कोड नीचे दिया गया है।
# configure the mongoDB client for a replica set of two nodes quarkus.mongodb.connection-string = mongodb://mongo1:27017,mongo2:27017की प्रतिकृति सेट के लिए कॉन्फ़िगर करें
हमारे मामले में, हम डेटाबेस को कॉन्फ़िगर करने के लिए निम्नलिखित कोड का उपयोग करेंगे।
# configure the mongoDB client for a replica set of two nodes quarkus.mongodb.connection-string = mongodb://localhost:27017की प्रतिकृति सेट के लिए mongoDB क्लाइंट को कॉन्फ़िगर करें
चरण 4 के साथ आगे बढ़ना।
चरण #4:कॉन्फ़िगर किए गए MongoDB डेटाबेस को चलाना
अगला कदम हमारे द्वारा अभी बनाए गए MongoDB डेटाबेस को चलाना है। ऐसा करने के लिए, नीचे दिए गए कोड का उपयोग करें।
docker run -ti --rm -p 27017:27017 mongo:4.0
चरण 5 के साथ आगे बढ़ना।
चरण #5:फ्रंट एंड बनाना
अब जब एप्लिकेशन के बैकएंड पर सभी काम हो गए हैं, तो आइए हम अपने एप्लिकेशन के फ्रंट एंड को कोड करने के लिए इस्तेमाल किए गए कोड पर एक नज़र डालें।
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 public class ReactiveFruitService { @Inject ReactiveMongoClient mongoClient; public CompletionStage<List> 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.*; import 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) public class ReactiveFruitResource { @Inject ReactiveFruitService fruitService; @GET public CompletionStage<List> list() { return fruitService.list(); } @POST public CompletionStage<List> add(Fruit fruit) { fruitService.add(fruit); return list(); } }
उपरोक्त उदाहरण में, हम फ्रंट एंड के गठन की सुविधा के लिए एक प्रतिक्रियाशील mongoDb क्लाइंट का उपयोग कर रहे हैं।
चरण 6 के साथ आगे बढ़ना।
चरण #6:BSON कोडेक का उपयोग करके mongoDb क्लाइंट को सरल बनाना
ऐसा करने के लिए, नीचे दिए गए कोड का उपयोग करें।
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; public class FruitCodec implements CollectibleCodec { private final Codec documentCodec; public FruitCodec() { this.documentCodec = MongoClient.getDefaultCodecRegistry().get(Document.class); } @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(writer, doc, encoderContext); } @Override public Class getEncoderClass() { return Fruit.class; } @Override public Fruit generateIdIfAbsentFromDocument(Fruit document) { if (!documentHasId(document)) { document.setId(UUID.randomUUID().toString()); } return 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(BsonReader reader, 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("name")); fruit.setDescription(document.getString("description")); return fruit; } }
अब हम इसे पहले से मौजूद फ्रूट क्लास से जोड़ने के लिए एक कोडेकप्रोवाइडर का उपयोग करेंगे।
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; public class FruitCodecProvider implements CodecProvider { @Override public Codec get(Class clazz, CodecRegistry registry) { if (clazz == Fruit.class) { return (Codec) new FruitCodec(); } return null; } }
चरण 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; 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(); 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); } }
निष्कर्ष
अब आप जानते हैं कि अपने सिस्टम में MongoDB क्लाइंट को कैसे कॉन्फ़िगर और उपयोग करना है। आगे बढ़ें और इन कोड को अपने सिस्टम में आज़माएं और हमें अपना अनुभव बताएं।
अनुच्छेद सारांश
MongoDB क्लाइंट के बारे में सब कुछ जानें और विभिन्न उपयोगों के लिए आप इसे अपने सिस्टम में कैसे कॉन्फ़िगर कर सकते हैं। अधिक जानने के लिए पढ़ें।
इसके साथ, हम “ . के अंत में आते हैं MongoDB क्लाइंट” लेख।
MongoDB प्रमाणन प्रशिक्षण पाठ्यक्रम के लिए आगामी बैचपाठ्यक्रम का नाम | <थ>तारीख||
---|---|---|
MongoDB सर्टिफिकेशन ट्रेनिंग कोर्स | <टीडी वर्ग=कोर्स_इन्फो>विवरण देखें | |
MongoDB सर्टिफिकेशन ट्रेनिंग कोर्स | कक्षा 6 अगस्त, 2022 से शुरू हो रही है 6 अगस्त सैट एंड सन (सप्ताहांत बैच) | विवरण देखें |