使用Golang的mgo进行分页功能

mgo是用于在Go中操作MongoDB的库。我想使用它来实现分页。

然而,由于MongoDB和mgo都是我第一次接触,所以不太清楚。
暂时看起来mgo没有类似于分页的便捷函数。
似乎还有一个称为minquery的库,但我不太了解怎么处理游标,并且只需要实现非常简单的需求,所以决定自己实现。

参考了下面的内容,样例代码是用Node.js编写的。

方法1:使用skip()和limit()进行处理。
这种方法的实现很简单,但随着数据量的增加,可能会面临性能问题。不过由于数据量不大,我们选择这种方法。

示例代码

// 本来は引数で渡す
perPage := 10 // ページあたり件数
currentPage := 1 // 現在のページ

session, err = mgo.Dial("mongodb://mongo/test")
if err != nil {
    log.Fatalln(err)
}
db = session.DB("test")

var people []*Person

q := db.C("people").Find(bson.M{}).Skip(perPage * (currentPage - 1)).Limit(perPage)
q.All(&people)
bannerAds