如何使用 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)
我有一个命令是使用 "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)