为了账号安全,请及时绑定邮箱和手机立即绑定

Golang MongoDB 驱动程序黑色

Golang MongoDB 驱动程序黑色

Go
呼啦一阵风 2023-07-26 19:30:32
如何使用golang mongodb驱动查询find?我试试这个:db.Collection("products").Find(nil, bson.M{}, &options.FindOptions{Sort: "-price"})但我收到了这个错误:无法将字符串类型转换为 BSON 文档:WriteString 只能在位于元素或值上时写入,但位于顶层上我不知道要传递给 Sort 变量什么,因为它是一个接口{}。
查看完整描述

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)


查看完整回答
反对 回复 2023-07-26
?
qq_花开花谢_0

TA贡献1835条经验 获得超6个赞

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


    queryOptions := options.FindOneOptions{}

    

    queryOptions.SetSort(bson.D{{"priority", -1}, {"last_error_time", 1}})


    sResult := collection.FindOne(context.TODO(), queryFilter, &queryOptions)


查看完整回答
反对 回复 2023-07-26
?
翻翻过去那场雪

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)


查看完整回答
反对 回复 2023-07-26
?
茅侃侃

TA贡献1842条经验 获得超21个赞

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

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


查看完整回答
反对 回复 2023-07-26
  • 4 回答
  • 0 关注
  • 98 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信