操作MongoDB
最后更新于:2022-04-02 06:48:07
## 操作MongoDB
mgo包可以很好地满足我们对MongoDB的日常操作需要。本节将以与Redis和MySQL类似的方式创建连接,存储和检索对象。
### 实践
1. 获取第三方库:
```
go get gopkg.in/mgo.v2
```
2. 建立 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
}
```
3. 建立 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
}
```
4. 建立 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)
}
}
```
5. 这会输出:
```
State: mongodb.State{Name:"Washington", Population:7062000}
```
### 说明
mgo包还提供连接池,以及调整和配置与mongodb数据库连接的许多方法。本节的例子非常基础,但说明了操作基于文档的数据库是多么容易。该软件包实现了BSON数据类型,与常见的JSON非常相似。
* * * *
学识浅薄,错误在所难免。欢迎在群中就本书提出修改意见,以飨后来者,长风拜谢。
Golang中国(211938256)
beego实战(258969317)
Go实践(386056972)
';