mgo包可以很好地满足我们对MongoDB的日常操作需要。本节将以与Redis和MySQL类似的方式创建连接,存储和检索对象。
实践
获取第三方库:
go get gopkg.in/mgo.v2
建立 config.go:
package mongodb
import mgo "gopkg.in/mgo.v2"
func Setup() (*mgo.Session, error) {
session, err := mgo.Dial("localhost")
if err != nil {
return nil, err
}
return session, nil
}
建立 exec.go:
package mongodb
import (
"fmt"
"gopkg.in/mgo.v2/bson"
)
type State struct {
Name string `bson:"name"`
Population int `bson:"pop"`
}
// Exec 演示创建和查询
func Exec() error {
db, err := Setup()
if err != nil {
return err
}
conn := db.DB("gocookbook").C("example")
// 我们可以一次性插入多条
if err := conn.Insert(&State{"Washington", 7062000}, &State{"Oregon", 3970000}); err != nil {
return err
}
var s State
if err := conn.Find(bson.M{"name": "Washington"}).One(&s); err != nil {
return err
}
if err := conn.DropCollection(); err != nil {
return err
}
fmt.Printf("State: %#v\n", s)
return nil
}
建立 main.go:
package main
import "github.com/agtorre/go-cookbook/chapter5/redis"
func main() {
if err := redis.Exec(); err != nil {
panic(err)
}
if err := redis.Sort(); err != nil {
panic(err)
}
}
这会输出:
State: mongodb.State{Name:"Washington", Population:7062000}
说明
mgo包还提供连接池,以及调整和配置与mongodb数据库连接的许多方法。本节的例子非常基础,但说明了操作基于文档的数据库是多么容易。该软件包实现了BSON数据类型,与常见的JSON非常相似。
最后编辑: kuteng 文档更新时间: 2021-01-03 15:03 作者:kuteng