Golang中如何在其他go文件中使用MongoDB连接

Golang中如何在其他go文件中使用MongoDB连接 导出此连接并从其他文件中调用它。 我正在使用 go-bongo 这个 ODM。

GitHub

GitHub

go-bongo/bongo

go-bongo/bongo

用于 MongoDB 的 Go ODM。通过创建 GitHub 帐户为 go-bongo/bongo 的开发做出贡献。

func Conn(){
  config := &bongo.Config{
    ConnectionString: "mongodb://go:fake@ds117523.mlab.com:17542/golangfake",
    Database:         "golang",
    }
    connection, _ := bongo.Connect(config)
 }

调用该函数。

func main(){
    Conn.connection //类似这样
}

更多关于Golang中如何在其他go文件中使用MongoDB连接的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于Golang中如何在其他go文件中使用MongoDB连接的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


在Go中,你可以通过导出连接变量并在其他文件中导入来共享MongoDB连接。以下是具体实现:

1. 创建数据库连接文件 (db.go):

package db

import (
    "github.com/go-bongo/bongo"
)

var Connection *bongo.Connection

func InitDB() error {
    config := &bongo.Config{
        ConnectionString: "mongodb://go:fake@ds117523.mlab.com:17542/golangfake",
        Database:         "golang",
    }
    
    var err error
    Connection, err = bongo.Connect(config)
    return err
}

2. 在主文件中初始化并使用连接 (main.go):

package main

import (
    "fmt"
    "log"
    "yourproject/db" // 替换为你的实际模块路径
)

func main() {
    // 初始化数据库连接
    err := db.InitDB()
    if err != nil {
        log.Fatal("数据库连接失败:", err)
    }
    
    // 使用导出的连接
    connection := db.Connection
    fmt.Println("MongoDB连接已建立:", connection)
    
    // 示例:使用连接进行操作
    // collection := connection.Collection("your_collection")
}

3. 在其他文件中使用连接 (user_service.go):

package services

import (
    "github.com/go-bongo/bongo"
    "yourproject/db"
)

type User struct {
    bongo.DocumentBase `bson:",inline"`
    Name  string `bson:"name"`
    Email string `bson:"email"`
}

func CreateUser(user *User) error {
    // 直接使用导出的连接
    return db.Connection.Collection("users").Save(user)
}

func FindUserById(id string) (*User, error) {
    user := &User{}
    err := db.Connection.Collection("users").FindById(bson.ObjectIdHex(id), user)
    return user, err
}

4. go.mod 模块配置示例:

module yourproject

go 1.21

require github.com/go-bongo/bongo v0.10.0

关键点说明:

  • 连接变量 Connection 以大写字母开头,表示导出(public)
  • InitDB() 函数初始化全局连接
  • 其他文件通过导入包路径访问 db.Connection
  • 确保在程序启动时调用 db.InitDB() 一次

这种模式避免了每次操作都创建新连接,提高了性能并确保连接复用。

回到顶部