mgo简介
mgo(音mango)是MongoDB的Go语言驱动,它用基于Go语法的简单API实现了丰富的特性,并经过良好测试。
官方网站:http://labix.org/mgo。
golang.tc(golangtc.com)网站的数据存储就是是用的MongoDB+mgo。近一年使用下来表现良好。
如何使用
下面介绍如何使用mgo,主要介绍集合的操作。对数据库,用户等操作,请自行查看文档。
第一步当然是先导入mgo包
连接服务器
通过方法Dial()来和MongoDB服务器建立连接。Dial()定义如下:
具体使用:
如果是本机,并且MongoDB是默认端口27017启动的话,下面几种方式都可以。
如果不在本机或端口不同,传入相应的地址即可。如:
对集合进行操作
介绍插入、查询、修改、删除操作。
先提一下ObjectId,MongoDB每个集合都会一个名为_id的主键,这是一个24位的16进制字符串。对应到mgo中就是bson.ObjectId。
这里我们定义一个struct,用来和集合对应。
注解
注意User的字段首字母大写,不然不可见。通过bson:”name”这种方式可以定义MongoDB中集合的字段名,如果不定义,mgo自动把struct的字段名首字母小写作为集合的字段名。如果不需要获得id_,Id_可以不定义,在插入的时候会自动生成。
插入
插入方法定义如下:
下面代码插入两条集合数据。
这里通过bson.NewObjectId()来创建新的ObjectId,如果创建完需要用到的话,放在一个变量中即可,一般在Web开发中可以作为参数跳转到其他页面。
通过MongoDB客户端可以发现,两条即可已经插入。
查询
通过func (c *Collection) Find(query interface{}) *Query来进行查询,返回的Query struct可以有附加各种条件来进行过滤。
通过Query.All()可以获得所有结果,通过Query.One()可以获得一个结果,注意如果没有数据或者数量超过一个,One()会报错。
条件用bson.M{key: value},注意key必须用MongoDB中的字段名,而不是struct的字段名。