Saya hanya bisa melihat bahwa kode dimulai, lalu tidak ada
Seperti yang telah Anda ketahui, ini karena DialInfo secara default memiliki batas waktu nol. Panggilan akan memblokir selamanya menunggu koneksi dibuat. Anda juga dapat menentukan batas waktu dengan:
dialInfo.Timeout = time.Duration(30)
session, err := mgo.DialWithInfo(dialInfo)
Sekarang saya tidak mendapatkan server yang dapat dijangkau
Ini karena globalsign/mgo saat ini belum mendukung URI string koneksi SRV. Lihat masalah 112.Anda dapat menggunakan format URI koneksi non-srv (MongoDB v3.4), lihat pertanyaan terkait StackOverflow:41173720.
Anda dapat menggunakan mongo-go-driver sebagai gantinya jika Anda ingin terhubung menggunakan URI koneksi SRV, misalnya:
mongoURI := "mongodb+srv://admin:[email protected]/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")
Contoh di atas kompatibel dengan versi saat ini v1.0.0