如何在Mongo的Go模型中更新数组

I have Player model in Go for Mongo and model Level

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

How to update Level from PlayerModel if I have instance of PlayerModel ( player pointer ) ? Player can play new ( not yet played ) level ( then insert ) or already played ( just update if time is lower then already achieved for that level ).

If this is just about updating a data structure in memory (whether it maps a MongoDB document or not), a naive algorithm can be applied, such as:

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})
}

See an example at: https://play.golang.org/p/C8SGqkgZ99