Я пытался следовать документации здесь и здесь , но безуспешно.
Я хочу получить singleResult
от FindOne
на Collection
named moviesCollection
, а затем используйте Decode
или Unmarshal
, чтобы поместить эти значения в структуру.Значения в структуре JSONData
точно такие же, как в каждом Document
Я использую официальный драйвер mongodb github.com/mongodb/mongo-go-driver
Вот пример того, что япробовал:
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)
Однако никаких ошибок не возникает, и JSON.Path
выдает пустую строку.
Я также пытался использовать bson.D{{"_id", "Deadpool"}}
вместо bson.M{"_id": "Deadpool"}
Я могу подтвердить, что JSON.Path
не является пустой строкой, так как я проверил базу данных с помощью MongoDB Compass
. Запись содержит следующее:
{"_id":"Deadpool","Path":"path/to/file"}