我在我的 Go 应用程序中使用 MongoDB,并提取一些数据并将其存储在 bson.M 中(这是一个示例,从数据库中获取 bson.M 对象然后打印它(让我们称这个对象为data):
[map[_id:ObjectID("XXXXXXX") address:XX decimal:18 providers:map[currency:value] symbol:LINK]
这对我来说看起来是正确的。
我认为想在providers现场循环地图(如您所见,它也是那里的地图)。我做了几次尝试,但每次都被阻止。
由于我在这里的文档中阅读的内容和我所做的测试,看起来 bson.M 和 original.M 是相同的,并且它们都被视为map[string]interface{}.
当我试图将它断言到 a 时,map[string]string我出现了一个恐慌错误:
// code run
data["providers"].(map[string]string)
//error received
panic: interface conversion: interface {} is primitive.M, not map[string]string
这样做的原因是我想遍历该providers字段,当我尝试按原样循环时,我收到此错误:
// code to run
for key, provider := range data["providers"] {...}
// error received
cannot range over data["providers"] (map index expression of type interface{})
我已经读到我可能需要对编组和解码做一些事情,但我觉得我只是错过了一个步骤,为什么我需要这样做,或者他们将如何提供帮助。
无论如何总结一下:
如何循环遍历一个 original.M/bson.M/map[string]interface{}?
如何将 original.M/bson.M/map[string]interface{} 转换为 map[string]string?
看起来我可能试图做与此条目相反的操作,并且看起来此条目给我的信息相互矛盾。希望在我了解更多我的真正问题时编辑问题。谢谢!
拉丁的传说
神不在的星期二
相关分类