我需要在 Mongo 數(shù)據(jù)庫的對(duì)象數(shù)組中找到特定值的重復(fù)條目。我的結(jié)構(gòu)看起來像這樣: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"`}如果有新玩家加入游戲,我想檢查以確保他們的用戶名沒有被占用。我用這種方法檢查重復(fù)的游戲代碼(如果count大于 1,我知道有一個(gè)游戲存在):count, err := collection.Find(bson.M{"gamecode": entry.GameCode}).Limit(1).Count()效果很好,但顯然無法檢查username玩家數(shù)組中對(duì)象的值。我在想我必須沿著檢查數(shù)組的大小和遍歷每個(gè)選項(xiàng)以找到重復(fù)的行做一些事情,但我沒有取得任何成功。編輯我正在運(yùn)行最新版本的 MongoDB 并使用 mgo.v2 驅(qū)動(dòng)程序。我想要實(shí)現(xiàn)的流程看起來像這樣:玩家 Y 想加入游戲 X。游戲 X 只能有一個(gè)“用戶名”實(shí)例,但相同的用戶名可以出現(xiàn)在其他游戲中。
1 回答

ibeautiful
TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊
您可以使用$elemMatch
collection.Find(bson.M{"gamecode":?entry.GameCode},bson.M{"players":?bson.M{"$elemMatch":?bson.M{"playerid":?playerid}}}).Limit(1).Count()
- 1 回答
- 0 關(guān)注
- 181 瀏覽
添加回答
舉報(bào)
0/150
提交
取消