Golang MongoDB 驱动程序排序



如何使用golangmongodb驱动程序查询查找?

我试试这个:

db.Collection("products").Find(nil, bson.M{}, &options.FindOptions{Sort: "-price"})

但是我得到了这个错误:

无法将类型字符串转换为 BSON 文档:WriteString 只能在定位在元素或值上时写入,但位于顶层

我不知道该传递给排序变量的内容,因为它是一个接口{}。

尝试以下代码

findOptions := options.Find()
// Sort by `price` field descending
findOptions.SetSort(bson.D{{"price", -1}})

db.Collection("products").Find(nil, bson.D{}, findOptions)

我无法将bson.D传递给选项(它导致了错误(。 但是这段代码对我有用:

queryOptions := options.FindOneOptions{}

queryOptions.SetSort(bson.D{{"priority", -1}, {"last_error_time", 1}})
sResult := collection.FindOne(context.TODO(), queryFilter, &queryOptions)

我在尝试解决相关问题时遇到的一些注意事项:

  • 如果尝试按多个字段排序,请确保使用 bson。D 宁愿 比布森。M因为bson。M 不维护秩序。

  • 如果尝试以编程方式构建多个排序字段,请尝试
    appending bson。E 到 bson。D

  • 正如达苏姆所做的那样,通过bson。M{} 表示空过滤器,推荐者为
    mongo 文档

应用的:

sort := bson.D{}
for _, example := examples {
sort = append(sort, bson.E{example, 1})
}
findOptions.SetSort(sort)
db.Collection("products").Find(nil, bson.D{}, findOptions)

需要注意的另一点是,确保字段名称的映射正确。就我而言,我试图对字段进行排序createdAt但在意识到我的mongodb字段被映射为createdat之后。

queryOptions.SetSort(bson.D{{"createdat", -1}

最新更新