使用 MongoDB 检查 Golang 中对象数组中的重复项

我需要在 Mongo 数据库的对象数组中找到特定值的重复条目。我的结构看起来像这样:


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"`

}

如果有新玩家加入游戏,我想检查以确保他们的用户名没有被占用。我用这种方法检查重复的游戏代码(如果count大于 1,我知道有一个游戏存在):


count, err := collection.Find(bson.M{"gamecode": entry.GameCode}).Limit(1).Count()

效果很好,但显然无法检查username玩家数组中对象的值。我在想我必须沿着检查数组的大小和遍历每个选项以找到重复的行做一些事情,但我没有取得任何成功。


编辑


我正在运行最新版本的 MongoDB 并使用 mgo.v2 驱动程序。我想要实现的流程看起来像这样:


玩家 Y 想加入游戏 X。游戏 X 只能有一个“用户名”实例,但相同的用户名可以出现在其他游戏中。


元芳怎么了
浏览 131回答 1
1回答

ibeautiful

您可以使用$elemMatchcollection.Find(bson.M{"gamecode": entry.GameCode},bson.M{"players": bson.M{"$elemMatch": bson.M{"playerid": playerid}}}).Limit(1).Count()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go