我在Go for Mongo和模型级
中有玩家模型type LevelModel struct {
Index int `json: "index" bson: "index"`
Time int64 `json: "time" bson: "time"`
}
type PlayerModel struct {
ID bson.ObjectId `json: "_id, omitempty" bson: "_id, omitempty"`
Score int64 `json: "score" bson: "score"`
Level []LevelModel `json: "level" bson: "level"`
}
如果我有PlayerModel(玩家指针)的实例,如何从PlayerModel更新Level? 玩家可以播放新的(尚未播放)级别(然后插入)或已经播放(如果时间已经低于已经达到的水平,则只需更新)。
答案 0 :(得分:3)
如果这只是更新内存中的数据结构(无论是否映射MongoDB文档),可以应用一个天真的算法,例如:
func (p *PlayerModel) updateLevel(idx int, time int64) {
for i := range p.Level {
lm := &(p.Level[i])
if lm.Index == idx {
if time < lm.Time {
lm.Time = time
}
return
}
}
p.Level = append(p.Level, LevelModel{idx, time})
}