I was trying to decode the data of the cursor into a map[string]interface{}, I tried it directly but it doesn't works at all, so I fount that I have to convert it to a BSON document and next convert it to a map[string]interface{}, and finally into a JSON string. I tried the following code:
...
for cursor.Next(context.Background()) {
err = cursor.Decode(&itemBson)
...
b, err := bson.Marshal(itemBson)
...
err = bson.Unmarshal(b, &itemMap)
...
}
...
But the bson document has the following value:
map[_id:ObjectID("5c2d0809a49bad7d547ec028") applications:bson.Array[bson.Document{bson.Element{"enabled": true}}] userName:coto userUUID:df2d ea92-c189-53b3-aafe-485d0be23bee]
And the map parsed as JSON:
{"_id":"5c2d0809a49bad7d547ec028","applications":[{}],"userName":"coto","userUUID":"df2dea92-c189-53b3-aafe-485d0be23bee"}
As you can see the key "applications" is empty in the JSON, but it really has content in the BSON document. I don't know why the data disappear.
How I can solve this error? Thanks.
Solved:
I solved this error using the following code:
var jsonDocuments []map[string]interface{}
var byteDocuments []byte
var bsonDocument bson.D
var jsonDocument map[string]interface{}
var temporaryBytes []byte
for cursor.Next(context.Background()) {
err = cursor.Decode(&bsonDocument)
...
temporaryBytes, err = bson.MarshalExtJSON(bsonDocument, true, true)
...
err = json.Unmarshal(temporaryBytes, &jsonDocument)
...
jsonDocuments = append(jsonDocuments, jsonDocument)
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With