go语言(使用/不使用GoAdmin框架和配置文件)连接mongoDb

 本篇分为两部分,第一部分为读取配置文件内容,第二部分为连接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函数中执行

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值