GO连接mongodb数据库

本文介绍如何使用Go语言连接MongoDB数据库,重点推荐了一个活跃的开源库mongodb/mongo-go-driver。该库作为gopkg.in/mgo.v2的替代,已在18年后停止维护。通过示例代码展示了一个简单的连接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: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

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值