Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menyambung ke MongoDB Atlas dari Go: Menyelesaikan Isu Kebolehcapaian Pelayan dan Tamat Masa?

Bagaimana untuk Menyambung ke MongoDB Atlas dari Go: Menyelesaikan Isu Kebolehcapaian Pelayan dan Tamat Masa?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-03 07:44:40881semak imbas

How to Connect to MongoDB Atlas from Go: Solving Timeout and Server Reachability Issues?

Mewujudkan Sambungan MongoDB Atlas daripada Go Menggunakan Struktur URL Baharu (MongoDB 3.6 )

Dalam percubaan anda sebelum ini untuk menyambung ke MongoDB Atlas daripada Go menggunakan mgo, anda menghadapi masalah dengan tamat masa DialInfo dan kebolehcapaian pelayan. Mari kita terokai isu ini dan sediakan penyelesaian:

Sifar Masa

DialInfo lalai mempunyai tamat masa sifar, menyebabkan proses penubuhan sambungan disekat selama-lamanya. Untuk menyelesaikan masalah ini, anda boleh menetapkan tamat masa secara eksplisit menggunakan:

dialInfo.Timeout = time.Duration(30)
session, err := mgo.DialWithInfo(dialInfo)

Pelayan Tidak Boleh Dicapai

Kebimbangan anda tentang pelayan tidak boleh dicapai berpunca daripada kekurangan sokongan mgo untuk format URI rentetan sambungan SRV (MongoDB v3 .4). Untuk menangani had ini, anda boleh menggunakan format URI sambungan bukan srv:

mongoURI = "mongodb+srv://admin:password@my-atlas-cluster-01.mongodb.net:27017/dbname?ssl=true&retryWrites=true"

Alternatif Go Driver untuk SRV

Jika anda lebih suka menggunakan SRV dalam URI sambungan anda, pertimbangkan untuk menggunakan pemandu mongo-go. Berikut ialah contoh:

mongoURI := "mongodb+srv://admin:password@my-atlas-cluster-01.mongodb.net/dbname?ssl=true&retryWrites=true"

client, err := mongo.NewClient(options.Client().ApplyURI(mongoURI))
if err != nil {
    log.Fatal(err)
}
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
defer cancel()
err = client.Connect(ctx)
defer client.Disconnect(ctx)

if err != nil {
    log.Fatal(err)
}
database := client.Database("go")
collection := database.Collection("atlas")

Perhatikan bahawa kod ini serasi dengan versi semasa mongo-go-driver (v1.0.0).

Atas ialah kandungan terperinci Bagaimana untuk Menyambung ke MongoDB Atlas dari Go: Menyelesaikan Isu Kebolehcapaian Pelayan dan Tamat Masa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn