import (
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)
options := options.Find()
// Sort by `_id` field descending
options.SetSort(bson.D{{"_id", -1}})
// Limit by 10 documents only
options.SetLimit(10)
cursor, err := collection.Find(context.Background(), bson.D{}, options)
在godoc.org/go.mongodb.org/mongo-driver/mongo/options上可以查看更多可用选项。特别是Find()
的所有可能选项的FindOptions。
mgo
那样简单明了。您可以使用 findopt.Limit
和 findopt.Sort
来进行排序和限制。
您可以从官方存储库中查看示例。
options.Find()
代替。 - pixeloverflow要构建 findOptions
,您需要导入 "github.com/mongodb/mongo-go-driver/options" 包。
import github.com/mongodb/mongo-go-driver/options
findOptions := options.Find() // build a `findOptions`
findOptions.SetSort(map[string]int{"when": -1}) // reverse order by `when`
findOptions.SetSkip(0) // skip whatever you want, like `offset` clause in mysql
findOptions.SetLimit(10) // like `limit` clause in mysql
// apply findOptions
cur, err := collection.Find(context.TODO(), bson.D{}, findOptions)
// resolve err
for cur.Next(context.TODO()) {
// call cur.Decode()
}
您可以使用
findOptions := options.Find()
findOptions.SetLimit(2)
findOptions.SetSkip(2)
...
cursor, err := collection.Find(context.Background(), bson.M{}, findOptions)
资源位于https://www.mongodb.com/blog/post/mongodb-go-driver-tutorial
显然,sort选项要求您添加一个map[string]interface{}
,在其中您可以将字段指定为键,并将排序顺序指定为值(其中1表示升序,-1表示降序),如下所示:
sortMap := make(map[string]interface{})
sortMap["version"] = 1
opt := findopt.Sort(sortMap)
一行选项
我知道已经有很多答案了,但你可以将其缩减为一行(如果你需要在任何情况下使用它)
// From the Doc
// func (f *FindOptions) SetSort(sort interface{}) *FindOptions
cursor, err := collection.Find(context.Background(), bson.M{}, options.Find().SetSort(map[string]int{"when": -1}).SetLimit(10))
SetSort()和其他函数当前返回其父指针本身。
findopt.Sort
来构建Find
的选项。不幸的是,它需要一个interface{}
参数,文档没有提供任何有用的信息,并且文档或GitHub中也没有示例。 - mu is too short