配置文件:
[mongo] host = 192.168.1.xxx:27017 username = "xxxx" password = "xxxx" database = xxxx maxPoolSize=100
自义定多个mongo数据库配置
package config type MongoDbDatabase struct { Host string UserName string Password string Database string MaxPoolSize string } func BuildMongoDbConfgs () map[string]MongoDbDatabase{ return map[string]MongoDbDatabase{ "default" : { Host:Get("mongo.host").String(), UserName:Get("mongo.username").String(), Password:Get("mongo.password").String(), Database:Get("mongo.database").String(), MaxPoolSize:Get("mongo.maxPoolSize").String(), }, } }
连接池实现:
package mongo import ( "fmt" "gopkg.in/mgo.v2" "search_server/pkg/config" "strconv" ) var session *mgo.Session type ichuntMongo struct { MongoList map[string]*mgo.Session } var ichuntMongo_ = &ichuntMongo{} func getconn(mongoConfig config.MongoDbDatabase) (*mgo.Session ,error){ url := mongoConfig.Host maxPoolSize := mongoConfig.MaxPoolSize maxPoolSizeInt,err := strconv.Atoi(maxPoolSize) if err != nil{ maxPoolSizeInt = 100 } url += "?maxPoolSize="+maxPoolSize session, err = mgo.Dial(url) if err != nil { return nil ,err } fmt.Println("url",url) fmt.Println("maxPoolSizeInt",maxPoolSizeInt) session.SetPoolLimit(maxPoolSizeInt) session.SetMode(mgo.Monotonic, true) myDB :=session.DB(mongoConfig.Database) err = myDB.Login(mongoConfig.UserName,mongoConfig.Password) if err != nil { return nil ,err } return session,nil } func SetUp() (err error) { err = nil ichuntMongo_.MongoList = make(map[string]*mgo.Session,0) mongodbList := config.BuildMongoDbConfgs() if len(mongodbList) > 0{ for mongoName,mongoConfig := range mongodbList{ ichuntMongo_.MongoList[mongoName],err = getconn(mongoConfig) if err != nil{ break } } } return err } func Conn(connection string) (*mgo.Session){ return ichuntMongo_.MongoList[connection].Copy() }
调用方式:
mongodb = mongo.Conn("default"); defer mongodb.Close()
本文来自博客园,作者:孙龙-程序员,转载请注明原文链接:https://www.cnblogs.com/sunlong88/p/13389669.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
2019-07-28 httpserver支持路由传输控制器
2019-07-28 httpserver实现简单的上下文