可以免费试用 MongoDB ,500MB 平时做测试没有问题啦,连接数据库可能因为网络有点慢,但是我们是测试啊,不在乎这点吧~

 

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

这是怎么申请试用版的博客,感谢这位大佬。注册好用起来很方便~ 传送门 https://www.cnblogs.com/xybaby/p/9460634.html

 

连接数据库选择的驱动是 mongo-go-driver , 传送门 https://github.com/mongodb/mongo-go-driver/tree/master/examples/documentation_examples

 

具体操作是这样的,在GOPATH,或者项目目录下。

 

go get github.com/mongodb/mongo-go-driver/mongo

 

 如果用的是  Go Modules  引入后会爆红!所以我们需要 go mod tidy 。在国内你是知道的,所以我们这样。

 

powershell

$env:GOPROXY = "https://goproxy.io"

go mod tidy

 

然后下面是代码

建一个文件夹名字是 mgodb / mgo.go

package mgodb

import (
	"context"
	_"fmt"
	"go.mongodb.org/mongo-driver/mongo"
	"go.mongodb.org/mongo-driver/mongo/options"
	"log"
	"time"
)

type mgo struct {
	uri string //数据库网络地址
	database string //要连接的数据库
	collection string //要连接的集合
}

func (m *mgo)Connect() *mongo.Collection {
	ctx , cancel :=context.WithTimeout(context.Background(),10*time.Second)
	defer cancel() //养成良好的习惯,在调用WithTimeout之后defer cancel() 
	client, err := mongo.Connect(ctx, options.Client().ApplyURI(m.uri))
	if err != nil {
		log.Print(err)
	}
	collection := client.Database(m.database).Collection(m.collection)
	return collection
}

 

基本就是这样连接了,下面我们来测试耗时在哪。 在当前文件夹创建 mgodb / mgo_test.go  Goland会自动识别这是测试文件。代码

 

package mgodb

import (
	"fmt"
	"testing"
)

func TestMgo_Connect(t *testing.T) {
	var mgo = &mgo{
		"mongodb+srv://user:password@官网给你的.mongodb.net",
		"MainSite",
		"UsersM12",
	}
        
         mgo.Connect()
	//collection :=mgo.Connect()
	//fmt.Printf("%T\n",collection)
}

 

可以直接在 Goland 里执行,但是在控制台功能更多。

 

在这里我们需要用到 Graphviz 绘图软件 ,记得在环境变量配置一下。 传送门 : http://www.graphviz.org/ 

 

我们在命令行里执行测试文件

 

 go test -bench . -cpuprofile cpu.out

 

这样会生成可执行文件  mgodb.test.exe 和 cpu.out

 

 go tool pprof cpu.out

 

这时会有一个交互界面在里面输入 web

 

(pprof) web
(pprof) exit

 就可以打开这张图片,svg 不能上传,大概可以看出连接花费了630ms

 Golang 连接 MongoDB 随笔

 

  大概就是这样了,查询的语法都在 github那个传送门里,可以去看一下。

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄