Tôi chỉ có thể thấy rằng mã bắt đầu, sau đó không có gì
Như bạn đã tìm hiểu, điều này là do DialInfo theo mặc định có thời gian chờ bằng không. Cuộc gọi sẽ bị chặn vĩnh viễn khi chờ kết nối được thiết lập. Bạn cũng có thể chỉ định thời gian chờ bằng:
PhiêndialInfo.Timeout = time.Duration(30)
session, err := mgo.DialWithInfo(dialInfo)
Hiện tôi không nhận được máy chủ nào có thể truy cập được
Điều này là do perfalsign / mgo hiện chưa hỗ trợ URI chuỗi kết nối SRV. Xem sự cố 112.Bạn có thể sử dụng định dạng URI kết nối không phải srv (MongoDB v3.4), xem câu hỏi liên quan StackOverflow:41173720.
Thay vào đó, bạn có thể sử dụng mongo-go-driver nếu bạn muốn kết nối bằng URI kết nối SRV, ví dụ:
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")
Ví dụ trên tương thích với phiên bản hiện tại v1.0.0