शुरू करने से पहले
यह ट्यूटोरियल मानता है कि आपके पास:
- गो भाषा की बुनियादी समझ
- आपके सिस्टम पर नवीनतम 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.")
अब आप अपने गो एप्लिकेशन में मोंगोडीबी को डेटासोर्स के रूप में आसानी से उपयोग कर सकते हैं, आप इस ट्यूटोरियल में इस्तेमाल किया गया पूरा कोड हमारे जीथब रेपो पर पा सकते हैं