介绍一个go连接mongo的开源工具 mongodb/mongo-go-driver
go连接mongo的工具不是太多,几年前的朋友门大多对gopkg.in/mgo.v2比较熟悉,这是18年之前比较知名的开源工具,但在18年后已经不在维护了,作者的原话是 最主要的原因是我已经停止在任何新项目中使用MongoDB,大神都不靠这个吃饭了。所以不推荐大家使用,于是在github上找了另一个很活跃的开源工具mongodb/mongo-go-driver
github地址:https://github.com/mongodb/mongo-go-driver
下面上demo:
- 安装 官方推荐用go的包管理工具dep下载,
dep ensure -add "go.mongodb.org/mongo-driver/mongo@~1.0.0"
不过我下载一直报错,就用go get吧
go get go.mongodb.org/mongo-driver/mongo
下面看代码
package modules
import (
"context"
"core"
"strconv"
"time"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"go.mongodb.org/mongo-driver/mongo/readpref"
)
var MongoClient *mongo.Client
func MongoInit() (e error) {
// context是go的标准库包,不是很清楚这个包的作用,文档上面也没有写很清楚,知道的朋友希望指点
//一下
ctx, _ := context.WithTimeout(context.Background(), 10*time.Second)
// 连接uri
uri := "mongodb://dcjt:dcjt123dalgurak@127.0.0.1:27017/admin"
// 构建mongo连接可选属性配置
opt := new(options.ClientOptions)
// 设置最大连接的数量
opt = opt.SetMaxPoolSize(uint16(10))
// 设置连接超时时间 5000 毫秒
du, _ := time.ParseDuration("5000")
opt = opt.SetConnectTimeout(du)
// 设置连接的空闲时间 毫秒
mt, _ := time.ParseDuration("5000")
opt = opt.SetMaxConnIdleTime(mt)
// 开启驱动
MongoClient, err := mongo.Connect(ctx, options.Client().ApplyURI(uri), opt)
if err != nil {
e = err
return
}
// 注意,在这一步才开始正式连接mongo
e = MongoClient.Ping(ctx, readpref.Primary())
return
}
操作mongo:
func getData() {
// 指定数据库名称
db := MongoClient.Database("databaseName")
// 指定连接的集合
col := db.Collection("user")
// 做一个唯一查询
ret := col.FindOne(ctx,map[string]string{"name":"pika"})
// 获取的byte数据
raw,_ := ret.DecodeBytes()
// 转为字符串打印出来
fmt.Println(raw.String())
}
这里只做一个简单的能跑通的demo,带大家入下门,具体的其它的方法 ,大家依文档为主,文档地址https://github.com/mongodb/mongo-go-driver

本文介绍如何使用Go语言连接MongoDB数据库,重点推荐了一个活跃的开源库mongodb/mongo-go-driver。该库作为gopkg.in/mgo.v2的替代,已在18年后停止维护。通过示例代码展示了一个简单的连接MongoDB的入门教程,并提供了官方文档链接供深入学习。
2303





