• 欢迎来到本博客,希望可以y一起学习与分享

go mongo-go-driver

笔记 benz 3周前 (09-27) 7次浏览 0个评论 扫描二维码
文章目录[隐藏]

初始

GitHub:https://github.com/mongodb/mongo-go-driver

安装

初始化MongoDB实例

在Go中使用BSON对象

在我们发送查询给数据库之前, 很重要的一点是,理解Go Driver是如何和BSON对象协同工作的。JSON文档在MongoDB里面以二进制形式存储, 被称作BSON(二进制编码的JSON)。不像其他的数据库保存JSON数据为简单的字符串和数字, BSON扩展了JSON的保存形式, 包括额外的类型, 比如int, long, date, floating point以及decimal128。这使得它让应用程序更容易来可靠地处理、排序和比较数据。Go Driver有两个系列的类型表示BSON数据:D系列类型和Raw系列类型。

D系列的类型使用原生的Go类型简单地构建BSON对象。这可以非常有用的来创建传递给MongoDB的命令。 D系列包含4种类型:
– D:一个BSON文档。这个类型应该被用在顺序很重要的场景, 比如MongoDB命令。
– M: 一个无需map。 它和D是一样的, 除了它不保留顺序。
– A: 一个BSON数组。
– E: 在D里面的一个单一的子项。

这里有一个使用D类型构建的过滤文档的例子, 它可能被用在查询name字段匹配“Alice”或者“Bob”的文档:

Raw系列类型被用来验证bytes类型的slice, 你也可以从Raw类型使用Lookup()获得单个的子项, 这在你不想要unmarshall某个BSON到另一个类型的时候很有用。这篇帮助文档会只使用D系列类型。

CRUD操作(不使用struct)

GO Mongodb时间处理

go在操作monogdb时间的时候如果使用time.Time时间格式,则前后端的时间显示是这样的:2021-01-28T06:38:43.622Z;这种格式很不友好(时区还不对),更多时候我们可能需要的是这种格式:2021-01-28 14:38:43;在网上查了一些资料,发现解决方案都不太好,有的是要手动做转换,有的是改变了mongodb的存储内容;我这里综合了一些资料给出以下解决方法(通过申明time.Time的扩展,重写json和bson序列化代码实现):

序列化处理代码:

在需要进行时间转换的struct中申明common.JsonTime

CRUD操作(使用struct)

model

curd

分页查询

当集合中存储了大量的数据后,一般情况下我们需要实现分页查询的功能,我们可以通过设置options的SetLimit和SetSkip来实现。
以下程序查询第5页,每页显示20条记录:

参考

mongo-go-driver使用简介
mongo-go-driver详细使用示例
MongoDB Go Driver使用帮助文档
GO Mongodb时间处理


文章 go mongo-go-driver 转载需要注明出处
喜欢 (0)

您必须 登录 才能发表评论!