如何使用 go mongo 驱动程序一起执行查找、区分和排序

How to perform Find, Distinct & Sort all together using go mongo driver

我有一个命令是使用 "labix.org/v2/mgo"

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

这工作正常。但是现在我要转到官方的 golang mongo-driver "go.mongodb.org/mongo-driver/mongo" 并且我想 运行 在那个库中使用这个命令但是没有直接的函数可以与 Find then Sort 一起使用然后不同。如何使用此 mongo-驱动程序实现此命令。变量 listedDepartment 的类型为 []string。请建议我知道解决方案。

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

// Obtain collection:
c := client.Database("dbname").Collection("collname")

ctx := context.Background()
results, err := c.Distinct(ctx, "department", bson.M{})

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

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

如果需要排序,只需对切片进行排序:

sort.Strings(listedDepartment)