Mongoid嵌入式文档使用最小命中数添加/删除数据库

时间:2012-08-27 15:04:41

标签: ruby-on-rails mongodb mongoid

我有一个模型“条目”,其中有许多项目“项目”是嵌入文档:

class Entry
  embeds_many :items, cascade_callbacks: true
  ...
end

问题是我必须移动一堆嵌入式文档项目,包括删除一些,添加其他文件,以及在Entrys之间移动其他文件。这似乎是我在Entry.items上做的任何操作,如:

entry.items << item or entry.items.delete(i)

导致自己的数据库写入。如果我做了很多看似非常昂贵的改变。有没有办法告诉mongoid让我添加项目,删除它们,在本地移动它们,只有当一切都完成后发送一个entry.save!写入数据库?

1 个答案:

答案 0 :(得分:0)

通过执行以下操作替换items数组:

entry.items = new_items 

数据库效率最高。但事实证明是错误的,确保你有最新版本的mongoid并做一个entry.save如果entry.changed? || entry.new_record?因为在修改项目时偶尔会保存上面的条目。