Golang MongoDB 驱动程序黑色

如何使用golang mongodb驱动查询find?

我试试这个:

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

但我收到了这个错误:

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

我不知道要传递给 Sort 变量什么,因为它是一个接口{}。


呼啦一阵风
浏览 130回答 4
4回答

繁花如伊

尝试下面的代码findOptions := options.Find()// Sort by `price` field descendingfindOptions.SetSort(bson.D{{"price", -1}})db.Collection("products").Find(nil, bson.D{}, findOptions)

qq_花开花谢_0

我无法将 ‍‍ 传递bson.D给选项(这导致了错误)。但这段代码对我有用:    queryOptions := options.FindOneOptions{}        queryOptions.SetSort(bson.D{{"priority", -1}, {"last_error_time", 1}})    sResult := collection.FindOne(context.TODO(), queryFilter, &queryOptions)

翻翻过去那场雪

我在尝试解决相关问题时遇到的一些注释:如果尝试按多个字段排序,请务必使用 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)

茅侃侃

还有一点需要注意,确保字段名称的映射正确。就我而言,我试图对字段进行排序createdAt,但在意识到我的 mongodb 字段被映射为createdat.queryOptions.SetSort(bson.D{{"createdat", -1}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go