# Mongo

# 1 Example

项目地址 (opens new window)

ego版本:ego@v0.5.3

# 2 mongo配置

type Config struct {
    DSN                        string        // DSN DSN地址
    Debug                      bool          // Debug 是否开启debug模式
    SocketTimeout              time.Duration // SocketTimeout 创建连接的超时时间
    PoolLimit                  int           // PoolLimit 连接池大小(最大连接数)
    EnableMetricInterceptor    bool          // EnableMetricInterceptor 是否启用prometheus metric拦截器
    EnableAccessInterceptorReq bool          // EnableAccessInterceptorReq 是否启用access req拦截器,此配置只有在EnableAccessInterceptor=true时才会生效
    EnableAccessInterceptorRes bool          // EnableAccessInterceptorRes 是否启用access res拦截器,此配置只有在EnableAccessInterceptor=true时才会生效
    EnableAccessInterceptor    bool          // EnableAccessInterceptor 是否启用access拦截器
    SlowLogThreshold           time.Duration // SlowLogThreshold 慢日志门限值,超过该门限值的请求,将被记录到慢日志中
}
1
2
3
4
5
6
7
8
9
10
11

# 3 优雅的Debug

通过开启debug配置和命令行的export EGO_DEBUG=true,我们就可以在测试环境里看到请求里的配置名、地址、耗时、请求数据、响应数据 img.png

# 4 用户配置

[mongo]
debug=true
dsn="mongodb://user:password@localhost:27017,localhost:27018"
1
2
3

# 5 用户代码

var stopCh = make(chan bool)
	// 假设你配置的toml如下所示
	conf := `
[mongo]
	debug=true
	dsn="mongodb://user:password@localhost:27017,localhost:27018"
`
	// 加载配置文件
err := econf.LoadFromReader(strings.NewReader(conf), toml.Unmarshal)
if err != nil {
    panic("LoadFromReader fail," + err.Error())
}

// 初始化emongo组件
cmp := emongo.Load("mongo").Build()
coll := cmp.Client.Database("test").Collection("cells")
findOne(coll)

stopCh <- true
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
上次更新: 4/15/2021, 9:43:52 PM