我需要在 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 只能有一個“用戶名”實例,但相同的用戶名可以出現在其他游戲中。
1 回答

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