新手问题 Mongoid 的一个数组的 item 如果有更新,如何一次性 update?

itsvoid · 2012年11月21日 · 最后由 yandy0725 回复于 2012年11月23日 · 2783 次阅读

比如说一个 projects 里面放置有 query 出来的 project,我对每个 project 的一个属性,比如 status 更改为'draft',那么如何只对 mongodb 进行一次 update 操作?

我现在的做法是:

projects.each do |p|
  p.status = 'draft'
  p.update
end

这样应该是,每一次内存更新都会触发数据库更新,我想能不能有一个 projects.update_all(update_all 对一个数组对象)

Criteria#update_all

#3 楼 @fresh_fish 你是 criteria 的方法,我的问题是有没有针对已经查出来的结果(数组)的?

#4 楼 @itsvoid

p_ids = projects.map {|p| p.id}
Project.where(_id: p_ids).update_all(status: 'draft')
需要 登录 后方可回复, 如果你还没有账号请 注册新账号