Я пытаюсь выяснить, как получить отдельный поддокумент из массива и распаковать его в структуру.
Мой документ на монго выглядит так:
{
"_id" : ObjectId("abc123"),
"gamecode" : "abc123"
"players" : [
{
"playerid" : ObjectId("abc123"),
"username" : "test",
},
{
"playerid" : ObjectId("abc456"),
"username" : "test2"
}]
}
И у меня естьструктура игрока, которая выглядит следующим образом:
type Player struct {
PlayerID bson.ObjectId `bson:"playerid" json:"playerid"`
Username string `bson:"username" json:"username"`
}
Из командной строки Монго я могу сделать
db.games.find(({"players.playerid": ObjectId('abc123')}, {"_id": 0, "players.$":1})
, который возвращает
{"players" : [{ "playerid" : ObjectId("abc123"), "username" : "test"}]}
Но у меня естьтрудно понять, как реализовать эту же функциональность в Go, чтобы у меня была заполненная структура плеера из результата запроса.Я играл с различными конфигурациями кода ниже, но это всегда приводит к пустой структуре.Чего мне здесь не хватает?
player := Player{}
collection.Find(bson.M{"players.playerid": bson.ObjectIdHex(pid)}).Select(bson.M{"_id": 0, "players.$": 1}).One(&player)
Я использую последнюю версию MongoDB и использую драйвер mgo.v2 для Go.