Golang中国

情景是这样的:

系统给某些用户加了禁止发言,计划定时每周恢复禁言用户可以发言。

mgo 有 UpdateAll , 到时不管该用户是否禁言全部替换字段值为 true , 但这样是否性能较低;能否像mysql那样一条条的从第一个查到末尾,查找到该字段为false时再改动呢? mgo 如果这样操作,则需要每次全库find一个修改一个,那样的话是否比UpdateAll效能更低呢?

2 回复
gomgo
#1 gomgo • 2016-06-30 10:48

用 Next 是否可以?

iter := collection.Find(nil).Iter()
for iter.Next(&result) {
    fmt.Printf("Result: %v\n", result.Id)
}
if err := iter.Close(); err != nil {
    return err
}
gomgo
#2 gomgo • 2016-06-30 10:53

应该先 Sort 把禁言字段 的 false 和 true 分列开,然后再找到第一个 false ,再然后 Next 处理,对吧?

需要 登录 后方可回复, 如果你还没有账号你可以 注册 一个帐号。