使用MongoDB从Golang中的子对象数组获取值

时间:2018-11-01 13:53:53

标签: mongodb go mgo

我正在使用mgo.v2驱动程序并安装了最新版本的MongoDB。我的文档结构定义如下:

type gameTemplate struct {
ID       bson.ObjectId `bson:"_id" json:"id"`
GameCode string        `bson:"gamecode" json:"gamecode"`
Players  []player      `bson:"players" json:"players"`
}

type player struct {
PlayerID bson.ObjectId `bson:"playerid" json:"playerid"`
Username string        `bson:"username" json:"username"`
Level    int           `bson:"level" json:"level"`
}

如何获取特定游戏中的用户名列表(由gamecode定义)?

是否有一种获取数组大小并遍历元素的方法,还是有一种首选方法?

1 个答案:

答案 0 :(得分:0)

您可以让所有具有特定游戏代码的玩家如下:

players := []gameTemplate{}
err = session.DB(DBname).C(Colloctionname).Find(bson.M{}).All(&players) 

如您所定义,每个玩家都有用户名,玩家人数分片是具有特定游戏代码的用户名数量。


ps:
小心并更改数据库名称和集合名称的DBname和Colloctionname,并使用数据库连接的会话 是