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

GoLang में डेटा स्रोत के रूप में MongoDB का उपयोग करना

शुरू करने से पहले

यह ट्यूटोरियल मानता है कि आपके पास:

  • गो भाषा की बुनियादी समझ
  • आपके सिस्टम पर नवीनतम GoLang संस्करण स्थापित है
  • आपके सिस्टम पर नवीनतम MongoDB संस्करण स्थापित है

इस ट्यूटोरियल में, हम आधिकारिक MongoDB Go Driver . का उपयोग करेंगे हमारे MongoDB डेटाबेस को प्रबंधित करने के लिए। नियत प्रक्रिया में, हम यह जानने के लिए एक प्रोग्राम लिखेंगे कि MongoDB Go Driver को कैसे स्थापित करें और इसके साथ CRUD संचालन कैसे करें।

स्थापना

सबसे पहले एक खाली फोल्डर में निम्न कमांड चलाएँ

go mod init gomongo

go mod init एक नई go.mod फ़ाइल बनाता है और जब आप गो प्रोग्राम चलाएंगे तो स्वचालित रूप से निर्भरता आयात करता है। फिर फ़ाइल main.go बनाएं और नीचे दिया गया कोड लिखें, हम बताएंगे कि यह कोड एक मिनट में क्या करेगा।

package main

import (
    "context"
    "fmt"
    "log"

    "go.mongodb.org/mongo-driver/bson"
    "go.mongodb.org/mongo-driver/mongo"
    "go.mongodb.org/mongo-driver/mongo/options"
)

// Book - We will be using this Book type to perform crud operations
type Book struct {
  Title     string
  Author    string
  ISBN      string
  Publisher string
  Copies     int
}

func main() {
    
  // Set client options
  clientOptions := options.Client().ApplyURI("mongodb://localhost:27017")

  // Connect to MongoDB
  client, err := mongo.Connect(context.TODO(), clientOptions)

  if err != nil {
    log.Fatal(err)
  }

  // Check the connection
  err = client.Ping(context.TODO(), nil)

  if err != nil {
    log.Fatal(err)
  }

  fmt.Println("Connected to MongoDB!")
  booksCollection := client.Database("testdb").Collection("books")
}

उपरोक्त कोड में, हमने mongo-driver के bson, mongo, और mongo/options पैकेज आयात किए हैं और एक Book परिभाषित किया है टाइप करें जिसका उपयोग इस ट्यूटोरियल में किया जाएगा

पहले मुख्य कार्य में, हमने MongoDB URL और क्रेडेंशियल के साथ क्लाइंटऑप्शन बनाए और इसे mongo.Connect पर पास किया। फ़ंक्शन, एक बार कनेक्ट होने के बाद हम client.Ping . द्वारा अपने कनेक्शन की जांच कर सकते हैं समारोह।

निम्नलिखित कोड booksCollection का उपयोग करेगा books को क्वेरी करने के लिए चर टेस्टडीबी से संग्रह।

booksCollection := client.Database("testdb").Collection("books")

दस्तावेज़ डालें

सबसे पहले संग्रह में सम्मिलित करने के लिए एक पुस्तक संरचना बनाते हैं, नीचे दिए गए कोड में हम collection.InsertOne का उपयोग कर रहे हैं संग्रह में एक दस्तावेज़ सम्मिलित करने के लिए कार्य करता है

// Insert One document
book1 := Book{"Animal Farm", "George Orwell", "0451526341", "Signet Classics", 100}
insertResult, err := booksCollection.InsertOne(context.TODO(), book1)
if err != nil {
    log.Fatal(err)
}

fmt.Println("Inserted a single document: ", insertResult.InsertedID)

एक साथ कई दस्तावेज़ सम्मिलित करने के लिए हमें Book . का एक टुकड़ा बनाना होगा ऑब्जेक्ट करें और इसे collection.InsertMany

// Insert multiple documents
book2 := Book{"Super Freakonomics", "Steven D. Levitt", "0062312871", "HARPER COLLINS USA", 100}
book3 := Book{"The Alchemist", "Paulo Coelho", "0062315005", "HarperOne", 100}
multipleBooks := []interface{}{book2, book3}

insertManyResult, err := booksCollection.InsertMany(context.TODO(), multipleBooks)
if err != nil {
    log.Fatal(err)
}

fmt.Println("Inserted multiple documents: ", insertManyResult.InsertedIDs)

दस्तावेज़ अपडेट करें

हम collection.UpdateOne . फ़ंक्शन द्वारा किसी एक दस्तावेज़ को अपडेट कर सकते हैं . इसे संग्रह में दस्तावेज़ों से मिलान करने के लिए एक फ़िल्टर दस्तावेज़ और अद्यतन संचालन का वर्णन करने के लिए एक अद्यतन दस्तावेज़ की आवश्यकता होती है। आप इन्हें bson.D प्रकारों का उपयोग करके बना सकते हैं। नीचे दिया गया कोड ISBN . के साथ पुस्तक से मेल खाएगा 0451526341 और कॉपी फ़ील्ड को 10 . से बढ़ाएँ

//Update one document
filter := bson.D{{"isbn", "0451526341"}}

update := bson.D{
    {"$inc", bson.D{
        {"copies", 10},
    }},
}

updateResult, err := booksCollection.UpdateOne(context.TODO(), filter, update)
if err != nil {
    log.Fatal(err)
}

fmt.Printf("Matched %v documents and updated %v documents.\n", updateResult.MatchedCount, updateResult.ModifiedCount)
<ब्लॉकक्वॉट>

आप फ़ंक्शन collection.UpdateMany द्वारा एक ही संग्रह में एक साथ एक से अधिक दस्तावेज़ों को भी अपडेट कर सकते हैं इसमें, हमें फ़िल्टर दस्तावेज़ पास करना होगा और दस्तावेज़ को collection.UpdateOne के समान अपडेट करना होगा

दस्तावेज़ ढूंढें

किसी एक दस्तावेज़ को खोजने के लिए, हम फ़ंक्शन का उपयोग कर सकते हैं collection.FindOne() , हम एक फ़िल्टर दस्तावेज़ पास करेंगे और परिणाम को Book . में डिकोड करेंगे चर टाइप करें

// A variable in which result will be decoded
var result Book

err = booksCollection.FindOne(context.TODO(), filter).Decode(&result)
if err != nil {
    log.Fatal(err)
}

fmt.Printf("Found a single document: %+v\n", result)

कई दस्तावेज़ों को खोजने के लिए, हम फ़ंक्शन का उपयोग करते हैं collection.Find() . यह विधि एक कर्सर लौटाती है, यह दस्तावेज़ों की एक धारा प्रदान करती है जिस पर हम पुनरावृति कर सकते हैं या हम फ़ंक्शन द्वारा सभी दस्तावेज़ प्राप्त कर सकते हैं cursor.All() Book . के एक टुकड़े में प्रकार।

cursor, err := booksCollection.Find(context.TODO(), bson.D{{}})
if err != nil {
  log.Fatal(err)
}
var books []Book
if err = cursor.All(context.TODO(), &books); err != nil {
  log.Fatal(err)
}
fmt.Printf("Found multiple documents: %+v\n", books)

दस्तावेज़ हटाएं

हम कार्यों का उपयोग करके संग्रह से दस्तावेज़ों को हटा सकते हैं collection.DeleteOne() या collection.DeleteMany() . यहां आप bson.D{{}} को फ़िल्टर तर्क के रूप में पास करते हैं, जो संग्रह के सभी दस्तावेज़ों से मेल खाएगा।

deleteCollection, err := booksCollection.DeleteMany(context.TODO(), bson.D{{}})
if err != nil {
    log.Fatal(err)
}
fmt.Printf("Deleted %v documents in the books collection\n", deleteCollection.DeletedCount)
<ब्लॉकक्वॉट>

संग्रह का उपयोग करके संपूर्ण संग्रह को छोड़ा जा सकता है। ड्रॉप () फ़ंक्शन, यह सभी दस्तावेज़ों और मेटाडेटा को हटा देगा, जैसे संग्रह से अनुक्रमणिका

एक बार जब आप सभी ऑपरेशन कर लेते हैं, तो MongoDB कनेक्शन बंद करना न भूलें

err = client.Disconnect(context.TODO())

if err != nil {
    log.Fatal(err)
}

fmt.Println("Connection to MongoDB closed.")

अब आप अपने गो एप्लिकेशन में मोंगोडीबी को डेटासोर्स के रूप में आसानी से उपयोग कर सकते हैं, आप इस ट्यूटोरियल में इस्तेमाल किया गया पूरा कोड हमारे जीथब रेपो पर पा सकते हैं


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगोडीबी $acos

  2. MongoDB समवर्ती अद्यतनों से कैसे निपटता है?

  3. स्केलग्रिड ने Amazon AWS पर साझा MongoDB होस्टिंग की घोषणा की

  4. वर्तमान URL स्ट्रिंग से बचें पार्सर को useNewUrlParser को सही पर सेट करके चेतावनी को हटा दिया गया है

  5. ClusterControl के साथ अपने डेटा की सुरक्षा