使用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)