官方权威
https://www.mongodb.com/blog/post/running-mongodb-queries-concurrently-with-go
代码
package main
import (
"fmt"
"github.com/globalsign/mgo"
"github.com/globalsign/mgo/bson"
)
var MgoSession *mgo.Session
func initSession() {
dialInfo := &mgo.DialInfo{
Addrs: []string{"localhost:27017"},
Direct: false,
PoolLimit: 4096,
Database: "yang",
Username: "",
Password: "",
}
var err error
MgoSession, err = mgo.DialWithInfo(dialInfo)
if err != nil {
fmt.Println(err)
}
}
type dbCollection func(collection *mgo.Collection) (err error)
func handlerCollection(colName string, query dbCollection) error {
s := MgoSession.Copy()
defer s.Close()
c := s.DB("yolo").C(colName)
return query(c)
}
type aa2 struct {
Name string `bson:"name"`
}
func main() {
initSession()
var aObj aa2
query := func(c *mgo.Collection) error {
return c.Find(bson.M{"name": "晓东"}).One(&aObj)
}
err := handlerCollection("yang", query)
if err != nil {
fmt.Println(err)
}
fmt.Println(aObj)
}
引用
http://www.jyguagua.com/?p=3126