首页 > 解决方案 > 使用 SetSort 时,Mongo Go 驱动程序出现接口转换错误

问题描述

我想使用 Go 在 Mongo DB 中更改我的文档的顺序。我有有效的 json 字符串代码,我可以将它成功编组到map[string]int. 这种类型的样本就像: [{year 1}, {lastupdated -1}]。该值呈现顺序year字段升序和lastupdated字段降序。这个结构是 MongoDB 理解的一个方面。我也将这些数据传递给bson.D类型。这是我的代码:

if queries["order"] != nil {
        var unmarshalledOrder map[string]int
        json.Unmarshal(queries["order"].([]byte), &unmarshalledOrder)

        docRes := make(bson.D, 0)
        for field, sort := range unmarshalledOrder {
            docRes = append(docRes, bson.DocElem{field, sort})
        }

        log.Println(docRes)
    }

当我打印docRes时,一切都很顺利。但是我将数据传递给options.Sort函数,函数会引发interface conversion: interface {} is runtime.errorString, not string恐慌。这是mongo go驱动程序的错误还是我错了?

标签: mongodbgo

解决方案


您可以发布您编写的使用驱动程序的代码吗?基于 的使用bson.DocElem,我认为您使用的是 mgo,但 mgo 的Query.Sort方法需要字符串,而不是文档(https://pkg.go.dev/github.com/globalsign/mgo?tab=doc#Query.Sort)。


推荐阅读