如何在官方 mongo-go-driver 中分页光标
How to page a cursor in official mongo-go-driver
正在检查 mongo-go-driver:
中的界面 Cursor
https://github.com/mongodb/mongo-go-driver/blob/master/mongo/cursor.go#L37
没有 Limit
或 Skip
函数。
如何对结果进行分页?
我想我在尝试 Sort
或 Count
时会遇到同样的问题。
有办法吗?或者,这只是尚未在官方驱动程序中实现吗?
您可以签入包中的大多数查找选项 options
https://github.com/mongodb/mongo-go-driver/tree/master/mongo/options
client, err := mongo.Connect(context.Background(), "mongodb://localhost:27017", nil)
// check err
db := client.Database("examples")
coll := db.Collection("inventory")
{
cursor, err := coll.Find(
context.Background(),
options.SetSort(bson.NewDocument(bson.EC.Int64("x", 1))),
options.SetLimit(30),
options.SetSkip(5),
)
// cursor decode...
}
过滤计数
count, err :=coll.Count(context.Background(),bson.NewDocument(bson.EC.String("foo", "bar")))
从文档元数据计算
count, err := coll.EstimatedDocumentCount(context.Background(),countopt.MaxTimeMs(100))
编辑:
Mongo-go-driver stable v1.0.0 发布,他们分离了 BSON 库,请参考官方 documentation
正在检查 mongo-go-driver:
中的界面 Cursorhttps://github.com/mongodb/mongo-go-driver/blob/master/mongo/cursor.go#L37
没有 Limit
或 Skip
函数。
如何对结果进行分页?
我想我在尝试 Sort
或 Count
时会遇到同样的问题。
有办法吗?或者,这只是尚未在官方驱动程序中实现吗?
您可以签入包中的大多数查找选项 options
https://github.com/mongodb/mongo-go-driver/tree/master/mongo/options
client, err := mongo.Connect(context.Background(), "mongodb://localhost:27017", nil)
// check err
db := client.Database("examples")
coll := db.Collection("inventory")
{
cursor, err := coll.Find(
context.Background(),
options.SetSort(bson.NewDocument(bson.EC.Int64("x", 1))),
options.SetLimit(30),
options.SetSkip(5),
)
// cursor decode...
}
过滤计数
count, err :=coll.Count(context.Background(),bson.NewDocument(bson.EC.String("foo", "bar")))
从文档元数据计算
count, err := coll.EstimatedDocumentCount(context.Background(),countopt.MaxTimeMs(100))
编辑:
Mongo-go-driver stable v1.0.0 发布,他们分离了 BSON 库,请参考官方 documentation