GO连接mongodb数据库

介绍一个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:[email protected]: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

你可能感兴趣的:(mongo,go)