代码拉取完成,页面将自动刷新
package z1mongo
import (
"context"
"time"
"gitee.com/z1gotool/z1err"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"go.mongodb.org/mongo-driver/mongo/readpref"
)
var DB *mongo.Database
// connetc pool
// url mongodb://localhost:27017, mongodb://username:password@localhost:27017
func Connect(uri, dbName string, timeout, clientMaxNum uint64) (db *mongo.Database, err error) {
defer z1err.Handle(&err)
// https://zhuanlan.zhihu.com/p/613226112
// 设置连接超时时间
ctx, cancel := context.WithTimeout(context.Background(), time.Duration(timeout*uint64(time.Second)))
defer cancel()
// 通过传进来的uri连接相关的配置
opts := options.Client().ApplyURI(uri)
// 设置最大连接数 - 默认是100 ,不设置就是最大 max 64
opts.SetMaxPoolSize(clientMaxNum)
// 发起链接
client, err := mongo.Connect(ctx, opts)
z1err.Check(err)
// 判断服务是不是可用
err = client.Ping(context.Background(), readpref.Primary())
z1err.Check(err)
// 返回 client
db = client.Database(dbName)
DB = db
return
}
func Disconnect(db *mongo.Database) (err error) {
defer z1err.Handle(&err)
if db != nil {
err = db.Client().Disconnect(context.Background())
z1err.Check(err)
}
return
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。