4 回答
TA贡献2012条经验 获得超12个赞
尝试下面的代码
findOptions := options.Find()
// Sort by `price` field descending
findOptions.SetSort(bson.D{{"price", -1}})
db.Collection("products").Find(nil, bson.D{}, findOptions)
TA贡献1835条经验 获得超7个赞
我无法将 传递bson.D给选项(这导致了错误)。但这段代码对我有用:
queryOptions := options.FindOneOptions{}
queryOptions.SetSort(bson.D{{"priority", -1}, {"last_error_time", 1}})
sResult := collection.FindOne(context.TODO(), queryFilter, &queryOptions)
TA贡献2065条经验 获得超13个赞
我在尝试解决相关问题时遇到的一些注释:
如果尝试按多个字段排序,请务必使用 bson.D 而不是 bson.M,因为 bson.M 不保留顺序。
如果尝试以编程方式构建多个排序字段,请尝试
将 bson.E 附加到 bson.D正如 dassum 所做的那样,按照mongo 文档的
建议传递 bson.M{} 以获得空过滤器
应用:
sort := bson.D{}
for _, example := examples {
sort = append(sort, bson.E{example, 1})
}
findOptions.SetSort(sort)
db.Collection("products").Find(nil, bson.D{}, findOptions)
TA贡献1842条经验 获得超21个赞
还有一点需要注意,确保字段名称的映射正确。就我而言,我试图对字段进行排序createdAt
,但在意识到我的 mongodb 字段被映射为createdat
.
queryOptions.SetSort(bson.D{{"createdat", -1}
- 4 回答
- 0 关注
- 134 浏览
添加回答
举报