Golang操作MongoDB(1) 连接池
// pool 连接池模式
func ConnectToDB(uri, name string, timeout time.Duration, num uint64) (*mongo.Database, error) {
// 设置连接超时时间
ctx, cancel := context.WithTimeout(context.Background(), timeout)
defer cancel()
// 通过传进来的uri连接相关的配置
o := options.Client().ApplyURI(uri)
// 设置最大连接数 - 默认是100 ,不设置就是最大 max 64
o.SetMaxPoolSize(num)
// 发起链接
client, err := mongo.Connect(ctx, o)
if err != nil {
log.Fatal(err)
return nil, err
}
// 判断服务是不是可用
if err = client.Ping(context.Background(), readpref.Primary()); err != nil {
log.Fatal(err)
return nil, err
}
// 返回 client
return client.Database(name), nil
}
重点(会考,划重点) ` 如 "用户名:密码@用户名:端口"`
toDB, err := db.ConnectToDB("mongodb://root:root123@localhost:27018", "user1",time.Duration(2),50)