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

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

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

我现在的做法是:

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

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

共收到 5 条回复
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')
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册