go 查看接口方法_Qmgo 更好用的Go语言 MongoDB driver

  • Qmgo

最近,七牛研发团队开源了一款更好用的Go语言的MongoDB driver,Qmgo:

https://github.com/qiniu/qmgo​github.com

它基于MongoDB官方 mongodb/mongo-go-driver 实现,但是有着更好的易用性,设计上参考了老牌的driver Mgo: go-mgo/mgo(比如Mgo的链式调用)。

  • 背景

做Qmgo的初衷,来自于使用MongoDB的gopher们共同的困扰,在MongoDB的Go官方driver成型前(v1.0.0发布在2019年3月),一直是Mgo一统江湖,出色的接口设计让其非常流行。七牛做为最早使用Go的公司之一,自然也是Mgo的深度用户。

但是Mgo已经在3年前不再维护,bug不修复,MongoDB的新特性自然也无法支持,而官方driver的接口设计是出名的不易用。

这样的背景下,基于满足下面的需求,Qmgo诞生了

- 想要MongoDB新特性

- 想要更稳定的driver

- 想要Mgo出色的接口设计

- 想要从Mgo迁移到Qmgo,代码改动最小

下面,简单介绍一下Qmgo的特点,详情可以点击查看:qiniu/qmgo

  • 好用在哪里?

举一个多文件查找、sort和limit的例子, 说明qmgo和mgo的相似,以及对官方driver的改进之处

官方Driver需要这样实现

// go.mongodb.org/mongo-driver
// find all 、sort and limit
findOptions := options.Find()
findOptions.SetLimit(7)  // set limit
var sorts D
sorts = append(sorts, E{Key: "weight", Value: 1})
findOptions.SetSort(sorts) // set sort

batch := []UserInfo{}
cur, err := coll.Find(ctx, bson.M{"age": 6}, findOptions)
cur.All(ctx, &batch)

Qmgo和mgo更简单,而且实现相似:

// qmgo
// find all 、sort and limit
batch := []UserInfo{}
cli.Find(ctx, bson.M{"age": 6}).Sort("weight").Limit(7).All(&batch)

// mgo
// find all 、sort and limit
coll.Find(bson.M{"age": 6}).Sort("weight").Limit(7).All(&batch)
  • 当前支持的功能

- 文档的增删改查

- Sort、limit、count、select、distinct

- 事务

- Hooks

- 自动化更新的默认和定制fields

- 预定义操作符

- 聚合Aggregate、索引操作、cursor

- 创建链接时支持配置: 连接池、pool Monitor、Auth、ReadPreference

  • 使用方法

欢迎大家去readme查看具体的使用方法,体验Qmgo的诸多强大功能:qiniu/qmgo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值