এই টিউটোরিয়ালটি Golang ভাষার দৃষ্টিকোণ থেকে MongoDB এর মৌলিক অপারেশনগুলি নিয়ে পরিচিতি দেয়।
দ্রষ্টব্য: এই টিউটোরিয়ালটিতে MongoDB দ্বারা সরবরাহিত গো ভাষা ড্রাইভার প্যাকেজ ব্যবহার করা হয়েছে।
প্রস্তাবিত টিউটোরিয়ালস
দ্রষ্টব্য: যদি আপনি MongoDB এর সাথে পরিচিত না হন, তাহলে প্রথমে MongoDB সংক্ষেপ সম্পাদন করুন। Golang টিউটোরিয়ালটি সংবিষ্টিত নিত্য জ্ঞান পূনরায় করবে না।
মৌলিক প্রয়োজনীয়
- Go 1.10 বা তার উচ্চতর ভার্শন
- MongoDB 2.6 বা তার উচ্চতর ভার্শন
উপরি অভিযোগী করা
go get go.mongodb.org/mongo-driver/mongo
MongoDB সাথে সংযোগ স্থাপন
import (
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"go.mongodb.org/mongo-driver/mongo/readpref"
)
// MongoDB সংযোগের ঠিকানা
uri := "mongodb://localhost:27017"
// কনটেক্সট অবজেক্ট পেতে, আপনি সময়সীমা সেট করতে পারেন
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
// MongoDB সাথে সংযোগ স্থাপন
client, err := mongo.Connect(ctx, options.Client().ApplyURI(uri))
কারিগুড়ি সরবরাহ করা না করা গোরুটিন ব্লক করে রাখে না। অর্থাৎ, Connect মেথড কল করার পর সরাসরি মংগোডিবিতে অপারেট করার পরে ভুল পায়ে যেতে পারে কারণ MongoDB সফলভাবে সংযুক্ত হয়নি। আপনি Ping মেথড ব্যবহার করে চেষ্টা করতে পারেন যে MongoDB সফলভাবে সংযুক্ত হয়েছে কি না।
// MongoDB পিং, যদি সফলভাবে সংযুক্ত হয়েছে তাহলে কোন ত্রুটি প্রত্যাবর্তন করা হয়নি
err = client.Ping(ctx, readpref.Primary())
MongoDB সংযোগের ঠিকানা
MongoDB সংযোগের ঠিকানা সায়ন্ধ্য সাথে গুরুত্বপূর্ণ তথ্য উভয় সার্ভার ঠিকানা, পোর্ট নাম্বার, একাউন্ট, এবং পাসওয়ার্ড যেমন কোন তথ্য সহিত। আগের ধরন:
mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]
উদাহরণ:
// ডিফল্ট ইউজারনেম এবং পাসওয়ার্ড সহ লোকালহোস্ট:২৭০১৭ ঠিকানা সাথে সংযুক্ত হওয়া
mongodb://localhost:27017
// একাউন্ট=রুট, পাসওয়ার্ড=১২৩৪৫৬ এবং ডিফল্ট ডাটাবেস=অ্যাডমিন সহ লোকালহোস্ট:২৭০১৭ ঠিকানা সাথে সংযুক্ত হওয়া
mongodb://root:123456@localhost:27017/admin
সংযোগ সম্পর্কিত সম্পদ মুক্তি করুন
যদি সংযোগ আর প্রয়োজন না থাকে, আপনাকে ম্যানুয়ালি সংযোগ সম্পর্কিত সম্পদ মুক্তি করতে হবে।
defer func() {
if err = client.Disconnect(ctx); err != nil {
panic(err)
}
}()
কালেকশন ইন্সট্যান্স পেতে
মংগোডিবিতে Golang এ অপারেট করার জন্য, আপনাকে প্রথমে কালেকশন ইন্সট্যান্স পেতে হবে, এবং তারপর আপনি কালেকশন ইন্স্ট্যান্সগুলি উপর CRUD অপারেশন করতে পারেন।
// ডাটাবেজ নামকে মাধ্যমে ডাটাবেসের নাম ঠিক করুন, এবং কালেকশনের নামকে মাধ্যমে কালেকশনের নাম ঠিক করুন
collection := client.Database("testing").Collection("numbers")
দ্রষ্টব্য: MongoDB এর বৈশিষ্ট্যিকতা অনুযায়ী, পূর্বে ডাটাবেস এবং কালেকশন তৈরি করা প্রয়োজনীয় নয়। তারা ডেটা প্রথম বার লিখার সময় স্বয়ংক্রিয়ভাবে তৈরি হবে।
ডকুমেন্ট ঢোকান
ইনসার্টওয়ান ফাংশন ব্যবহার করে ডেটা ঢোকান।
// কনটেক্সট অবজেক্ট, অনুরোধের টাইমআউট সেট করার জন্য সাধারণভাবে ব্যবহৃত, আপনি আগে থেকে তৈরি করা কনটেক্সট অবজেক্টটি পুনরায় ব্যবহার করতে পারেন, পুনরায় নিলে প্রয়োজন নেই
ctx, cancel = context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
// ডকুমেন্ট ঢোকান, এখানে আমরা জেএসওএন ডকুমেন্ট বর্ণনা করার জন্য bson.D টাইপ ব্যবহার করি, bson.D একটি জেএসওএন অ্যারে প্রতিনিধিত্ব করে
res, err := collection.InsertOne(ctx, bson.D{{"name", "pi"}, {"value", 3.14159}})
// নতুন যোগ করা ডকুমেন্টের আইডি পেতে
id := res.InsertedID
নিমিত্ত: Golang এ, bson প্যাকেজ ব্যবহার করা হয় JSON ডকুমেন্ট ডেটা স্ট্রাকচার প্রতিনিধিত্ব করার জন্য। আগামী অধ্যায়গুলিতে MongoDB ডেটা সংরক্ষণ স্ট্রাকচারের অভিব্যক্তি বিস্তারিতভাবে তথ্য দেয়া হবে।
package main
import (
"context"
"fmt"
"time"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"go.mongodb.org/mongo-driver/mongo/readpref"
)
func main() {
// MongoDB সংযোগ ঠিকানা সেট করুন
uri := "mongodb://root:123456@localhost:27017/admin"
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
// MongoDB সাথে সংযোগ করুন
client, err := mongo.Connect(ctx, options.Client().ApplyURI(uri))
if err != nil {
panic(err)
}
defer func() {
// লেনদেন দিয়ে সংযোগ মুক্তি দিতে
if err = client.Disconnect(ctx); err != nil {
panic(err)
}
}()
// এখানে মঙ্গোডিবি সংযোগ সফল হয়েছে কি না তা চেক করুন
if err := client.Ping(ctx, readpref.Primary()); err != nil {
panic(err)
}
fmt.Println("MongoDB সফলভাবে সংযুক্ত হয়েছে!")
// নাম্বারস কালেকশন পান
collection := client.Database("testing").Collection("numbers")
// একটি ডকুমেন্ট ঢোকান
res, err := collection.InsertOne(ctx, bson.D{{"name", "pi"}, {"value", 3.14159}})
id := res.InsertedID
fmt.Println("নতুন ডকুমেন্ট আইডি=", id)
}