Golang MongoDB按字母顺序排序,包含跳过和限制

时间:2017-07-13 09:52:31

标签: mongodb sorting go limit skip

我需要按字母顺序排序,每页限制10个。但是使用我的代码,我按字母顺序将结果显示为每页10个,接下来的10个结果从“a”开始。同样......我的代码就像,

pageNo := 1
perPage := 10
DB.C("collection").Find(bson.M{"_id": bson.M{"$in": ids}}).Sort("name").Skip((pageNo - 1) * perPage).Limit(perPage).All(&results)

有没有办法先按字母顺序排序,然后应用分页?

2 个答案:

答案 0 :(得分:0)

这应该有效!

filter := bson.M{"_id": bson.M{"$in": ids}}
skip := int64(0)
limit := int64(10)

opts := options.FindOptions{
  Skip: skip,
  Limit: limit
}

DB.C("collection").Find(nil, filter, &opts)

答案 1 :(得分:0)

可以使用 go mongo-driver 中的 options 包实现排序、跳过和限制。

import (
"go.mongodb.org/mongo-driver/mongo/options"
"go.mongodb.org/mongo-driver/bson"
"context"
"log"
)

collection := mongoClient.Database("name-of-the-database").Collection("name-of-the-collection")
options := options.Find()
options.SetSort(bson.M{"field-name" : 1})
options.SetSkip(0)
options.SetLimit(10)

cursor, error := collection.Find(context.TODO(), bson.M{}, options)
if error != nil {
    log.Fatal(error)
}   
....
....