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

时间:2020-07-28 09:13:04

标签: mongodb go mgo mongo-go

我有一个使用"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。请建议我知道解决方法。

1 个答案:

答案 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)