我试图将光标的数据解码为map[string]interface{},但是直接尝试并没有起作用,所以我发现我必须将其转换为BSON文档,然后再转换为map[string]interface{},最后转换为JSON字符串。我尝试了以下代码:
...
for cursor.Next(context.Background()) {
err = cursor.Decode(&itemBson)
...
b, err := bson.Marshal(itemBson)
...
err = bson.Unmarshal(b, &itemMap)
...
}
...
但是bson文档具有以下值:
map[_id:ObjectID("5c2d0809a49bad7d547ec028") applications:bson.Array[bson.Document{bson.Element{"enabled": true}}] userName:coto userUUID:df2dea92-c189-53b3-aafe-485d0be23bee]
而转换为JSON的map如下:
{"_id":"5c2d0809a49bad7d547ec028","applications":[{}],"userName":"coto","userUUID":"df2dea92-c189-53b3-aafe-485d0be23bee"}
如您所见,JSON中的“applications”键为空,但在BSON文档中确实具有内容。我不知道数据为什么会消失。
我该如何解决这个错误?谢谢。
itemBson
的类型定义。你应该能够直接解码成map[string]interface{}
。当你这样做时会发生什么?会出现错误吗,还是值不如你所期望的那样。 - Charlie Tumahai