I tried to follow documentation here and here but had no luck.
I want to get a singleResult
from FindOne
on the Collection
named moviesCollection
and then use Decode
or Unmarshal
to put those values into a struct. The values in the struct JSONData
are exactly the same as in each Document
I am using the official mongodb driver github.com/mongodb/mongo-go-driver
Here is an example of what I have tried:
mongoContext, cancelContext := context.WithTimeout(context.Background(), 10*time.Second)
defer cancelContext()
mongoClient, _ := mongo.Connect(mongoContext, options.Client().ApplyURI("mongodb://localhost:27017"))
moviesCollection := mongoClient.Database("Entertainment").Collection("Movies")
moviesCollection.InsertOne(mongoContext, bson.M{"_id": "Deadpool", "Path": "path/to/file"})
singleResult := moviesCollection.FindOne(mongoContext, bson.M{"_id": "Deadpool"})
if singleResult.Err() != nil {
log.Println("Find error: ", singleResult.Err())
}
JSONData := struct {
Path string `json:"Path"`
}{}
decodeError := singleResult.Decode(&JSONData)
if decodeError != nil {
log.Println("Decode error: ", decodeError)
}
fmt.Println("Path: ", JSONData.Path)
However no errors are produced and JSON.Path
produces and empty string.
I have also tried using bson.D{{"_id", "Deadpool"}}
instead of bson.M{"_id": "Deadpool"}
I can confirm that JSON.Path
is not empty string as I have checked the database natively using MongoDB Compass
. The entry contains the following:
{"_id":"Deadpool","Path":"path/to/file"}