登录
首页 >  Golang >  Go问答

使用Go Mongo驱动程序进行查找、筛选和排序的操作方法

来源:stackoverflow

时间:2024-03-08 12:27:25 318浏览 收藏

“纵有疾风来,人生不言弃”,这句话送给正在学习Golang的朋友们,也希望在阅读本文《使用Go Mongo驱动程序进行查找、筛选和排序的操作方法》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新Golang相关的技术文章,有好的建议欢迎大家在评论留言,非常感谢!

问题内容

我有一个使用 "labix.org/v2/mgo" 库创建的命令

err = getCollection.Find(bson.M{}).Sort("department").Distinct("department", &listedDepartment)

这工作正常。但现在我正在转向官方 golang mongo-driver "go.mongodb.org/mongo-driver/mongo" 并且我想在该库中运行此命令,但没有可以与 find 一起使用的直接函数然后排序,然后区分。我怎样才能使用这个 mongo-driver 来实现这个命令。变量 listeddepartment[]string 的类型。请建议我知道解决方案。


解决方案


您可以使用Collection.Distinct(),但它尚不支持排序:

// obtain collection:
c := client.database("dbname").collection("collname")

ctx := context.background()
results, err := c.distinct(ctx, "department", bson.m{})

它返回 []interface{} 类型的值。如果您知道它包含 string 值,您可以使用循环和类型断言来获取字符串值,如下所示:

listeddepartment = make([]string, len(results))
for i, v := range results {
    listeddepartment[i] = v.(string)
}

如果您需要对其进行排序,只需对切片进行排序即可:

sort.Strings(listedDepartment)

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>