mongodb使用共享会话变量从我的函数插入

时间:2014-09-22 07:28:05

标签: mongodb go database-connection

嗨我有以下文件插入工作正常,我可以调用该功能。但是,我怀疑这个功能中的DB连接是非常有效的,因为我每分钟称它为30-40次。

我需要将db会话连接移到我的函数之外,我认为它与* mongoSession有关,但是无法让它工作。任何帮助都会得到满足。

tldr :如何在功能

之外移动连接
func insertmgo(aaa string, bbb string, ccc time.Time, wg *sync.WaitGroup) {

// mongo stuff
mongoDBDialInfo := &mgo.DialInfo{
    Addrs:    []string{MongoDBHosts},
    Timeout:  60 * time.Second,
    Database: AuthDatabase,
    Username: AuthUserName,
    Password: AuthPassword,
}
mongoSession, err := mgo.DialWithInfo(mongoDBDialInfo)
if err != nil {
    log.Fatalf("CreateSession: %s\n", err)
}
mongoSession.SetMode(mgo.Monotonic, true)
c := mongoSession.DB("x").C("ships")

oneship.Created = ccc
oneship.Name = bbb
oneship.Type = aaa

c.Insert(oneship)
wg.Done()
}

1 个答案:

答案 0 :(得分:1)

找到了解决方案

main {

 mongo stuff
    mongoDBDialInfo := &mgo.DialInfo{
        Addrs:    []string{MongoDBHosts},
        Timeout:  60 * time.Second,
        Database: AuthDatabase,
        Username: AuthUserName,
        Password: AuthPassword,
    }
    mongoSession, err := mgo.DialWithInfo(mongoDBDialInfo)
    if err != nil {
        log.Fatalf("CreateSession: %s\n", err)
    }


}

使用

调用函数
fun(mongoSession, .....)

在您的函数中

func fun(db *mgo.Session, .... , wg *sync.WaitGroup) {

我认为是这样的。不确定是否有其他或更好的方法,但这似乎对我有用。