MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

मोंगोडीबी क्लाइंट के बारे में आपको जो कुछ पता होना चाहिए

यदि आप पिछले कुछ समय से रिलेशनल डेटाबेस मैनेजमेंट सिस्टम के किसी भी रूप में हैं, तो आप शायद 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 प्रमाणन प्रशिक्षण पाठ्यक्रम के लिए आगामी बैच <थ>तारीख <टीडी वर्ग=कोर्स_इन्फो>

कक्षा 4 जून, 2022 से शुरू हो रही है

4 जून

सैट एंड सन (सप्ताहांत बैच)
पाठ्यक्रम का नाम
MongoDB सर्टिफिकेशन ट्रेनिंग कोर्स विवरण देखें
MongoDB सर्टिफिकेशन ट्रेनिंग कोर्स

कक्षा 6 अगस्त, 2022 से शुरू हो रही है

6 अगस्त

सैट एंड सन (सप्ताहांत बैच)
विवरण देखें

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB ने mLab का अधिग्रहण किया – विभिन्न MongoDB होस्टिंग विकल्प क्या हैं?

  2. पिमोंगो/मोंगोडीबी:इंडेक्स बनाएं या इंडेक्स सुनिश्चित करें?

  3. पीएचपी मोंगो सॉकेट से पढ़ने में त्रुटि

  4. MongoDB डेटा स्टोर निर्देशिका बदलना

  5. Mongoid का उपयोग करके बैच सम्मिलित/अद्यतन करें?