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:
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)
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"
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!