本篇分为两部分,第一部分为读取配置文件内容,第二部分为连接mongodb语句
如只需要连接mongodb不需要配置config.yml直接看第二部分即可
- 第一部分为读取config.yml配置文件文件来初始化全局变量
config配置文件中添加:
global文件夹中添加全局变量 GvaMongo *mongo.Client
package global
import (
"ginProject/config"
"github.com/go-redis/redis"
"github.com/spf13/viper"
"go.mongodb.org/mongo-driver/mongo"
"go.uber.org/zap"
"gorm.io/gorm"
)
var (
GvaDb *gorm.DB
GvaRedis *redis.Client
GvaConfig config.Server
GvaVp *viper.Viper
GvaLog *zap.Logger
GvaMongo *mongo.Client
)
config文件夹中创建mongodb文件
package config
type MongoDB struct {
Path string `mapstructure:"path" json:"path" yaml:"path"` // 服务器地址:端口
Config string `mapstructure:"config" json:"config" yaml:"config"` // 高级配置
Dbname string `mapstructure:"db-name" json:"dbname" yaml:"db-name"` // 数据库名
Username string `mapstructure:"username" json:"username" yaml:"username"` // 数据库用户名
Password string `mapstructure:"password" json:"password" yaml:"password"` // 数据库密码
MaxIdleConns int `mapstructure:"max-idle-conns" json:"maxIdleConns" yaml:"max-idle-conns"` // 空闲中的最大连接数
MaxOpenConns int `mapstructure:"max-open-conns" json:"maxOpenConns" yaml:"max-open-conns"` // 打开到数据库的最大连接数
LogMode bool `mapstructure:"log-mode" json:"logMode" yaml:"log-mode"` // 是否开启Gorm全局日志
LogZap string `mapstructure:"log-zap" json:"logZap" yaml:"log-zap"`
}
func (m *MongoDB) Dsn() string {
return "mongodb://"+m.Username+":"+m.Password+"@"+m.Path
}
config文件夹Server结构体中添加mongodb
MongoDB MongoDB `mapstructure:"mongodb" json:"mongodb" yaml:"mongodb"`
package config
type Server struct {
JWT JWT `mapstructure:"jwt" json:"jwt" yaml:"jwt"`
Zap Zap `mapstructure:"zap" json:"zap" yaml:"zap"`
Redis Redis `mapstructure:"redis" json:"redis" yaml:"redis"`
Captcha Captcha `mapstructure:"captcha" json:"captcha" yaml:"captcha"`
// gorm
Mysql Mysql `mapstructure:"mysql" json:"mysql" yaml:"mysql"`
MongoDB MongoDB `mapstructure:"mongodb" json:"mongodb" yaml:"mongodb"`
System System `mapstructure:"system" json:"system" yaml:"system"`
Casbin Casbin `mapstructure:"casbin" json:"casbin" yaml:"casbin"`
File File `mapstructure:"file" json:"file" yaml:"file"`
Excel Excel `mapstructure:"excel" json:"excel" yaml:"excel"`
Image Image `mapstructure:"image" json:"image" yaml:"image"`
Model Model `mapstructure:"model" json:"model" yaml:"model"`
}
- 第二部分为连接mongodb
初始化文件夹中创建mongodb文件
func MongoClient() *mongo.Client {
dsn := global.GvaConfig.MongoDB.Dsn()
// 设置客户端连接配置
clientOptions := options.Client().ApplyURI(dsn)
// 设置客户端连接配置
//clientOptions := options.Client().ApplyURI("mongodb://root:root@192.168.43.201:27018")
// 连接到MongoDB
client, err := mongo.Connect(context.TODO(), clientOptions)
if err != nil {
log.Fatal(err)
}
// 检查连接
err = client.Ping(context.TODO(), nil)
if err != nil {
log.Fatal(err)
}
global.GvaLog.Info("mongoDb 连接成功",zap.String("dsn",dsn))
return client
}
在项目入口,main函数中执行