mgo 定时 改动 所有 禁言 用户

情景是这样的:

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

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

共 2 个回复


gomgo

用 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
}
# 0

gomgo

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

# 1