我有一个使用"labix.org/v2/mgo"
库制作的命令
err = getCollection.Find(bson.M{}).Sort("department").Distinct("department", &listedDepartment)
这很好。但是现在我要转到正式的golang mongo驱动程序"go.mongodb.org/mongo-driver/mongo"
,我想在该库中运行此命令,但是没有直接函数可以与Find,Sort,Distinct一起使用。我如何使用此mongo-driver实现此命令。变量listedDepartment
的类型为[]string
。请建议我知道解决方法。
答案 0 :(得分:1)
您可以使用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)