Документы в коллекции выглядят следующим образом:
{
"id":"81f003b9-da3a-4480-9963-c9c8e01027af"
"name": "name",
"born": "birth date",
"birthplace": "place"
}
Я хочу получить из документа только элементы id и name. Мой код go:
type Player struct {
Id string `json:"id"`
PlayerName string `json:"name"`
Born string `json:"born, omitempty"`
BirthPlace string `json:"birthplace, omitempty"`
}
func GetIDName(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
var players []Player
opts := options.Find().SetProjection(bson.D{{"id", 1}, {"name", 1}})
cur, err := collection.Find(context.TODO(), bson.M{"status": 1}, opts)
if err != nil {
fmt.Fprintf(w, string("Invalid request payload"))
respondWithError(w, http.StatusBadRequest, "Invalid request payload")
return
}
defer r.Body.Close()
defer cur.Close(context.TODO())
for cur.Next(context.TODO()) {
var player Player
err := cur.Decode(&player)
if err != nil {
log.Fatal(err)
}
players = append(players, player)
}
if err != nil {
return
}
respondWithJSON(w, http.StatusOK, players)
}
Ожидаемый результат был
{
{
"id":"81f003b9-da3a-4480-9963-c9c8e01027af",
"name": "name"
},
{
"id":"81787162976217t895789127",
"name": "the other name"
}
}
Однако результат, который я получаю, будет:
{
{
"id":"81f003b9-da3a-4480-9963-c9c8e01027af",
"name": "",
"born": "",
"birthplace": ""
},
{
"id":"81787162976217t895789127",
"name": "",
"born": "",
"birthplace": ""
}
}
Как вы можете видите, из запроса выше я не могу получить name , и другие поля также выводятся со значениями nil. Было бы очень полезно, если бы вы сказали мне, что я делаю не так. Спасибо!