0. 背景
mgo 是一个连接 MongoDB 数据库的客户端程序和驱动。我们使用它连接 MongoDB。
mgo
1. 介绍
mgo:(发音为mango)是一个用于Go语言的MongoDB驱动程序,它在一个非常简单的API下实现了丰富和经过良好测试的特性选择,遵循了标准的Go习惯用法。
突出特点:
- 集群发现和通信:mgo提供自动化的集群拓扑发现和维护。
- 故障转移管理:当主服务器发生更改时,mgo将自动进行故障转移。
- 同步和并发:同一套接字上的并发操作在交付之前不会等待前一个操作的往返。当从网络接收到第一个文档时,也可以立即开始处理文档,并在后台继续接收。
- 结果预取: 当处理当前批处理中已确定的百分比时,将自动请求下一批结果。
- 灵活的序列化: mgo通过gobson支持文档的灵活编组和解组
- 与池集成的身份验证支持:mgo提供身份验证支持,具有强大的连接池集成。
- GridFS支持:mgo可用于向MongoDB发送和接收文件。
- 全面测试:自动化测试还涵盖了恶劣的情况,比如主故障转移。
2. 操作示例
2.1 安装
代码语言:javascript复制go get gopkg.in/mgo.v2
2.2 导入
代码语言:javascript复制import (
"gopkg.in/mgo.v2"
"gopkg.in/mgo.v2/bson"
)
2.3 建立连接
使用 mgo.Dial() 建立连接,返回对象是个 session 。
代码语言:javascript复制 session, err := mgo.Dial("server1.example.com,server2.example.com")
if err != nil {
panic(err)
}
defer session.Close()
获得 集合
代码语言:javascript复制 c := session.DB("test").C("people")
插入数据
调用 Insert 方法。
代码语言:javascript复制 err = c.Insert(&Person{"Ale", " 55 53 8116 9639"},
&Person{"Cla", " 55 53 8402 8510"})
if err != nil {
log.Fatal(err)
}
查询
调用Find方法。
代码语言:javascript复制 result := Person{}
err = c.Find(bson.M{"name": "Ale"}).One(&result)
if err != nil {
log.Fatal(err)
}
fmt.Println("Phone:", result.Phone)