在多个Mongoid文档上更新嵌入文档的字段

时间:2014-01-11 14:04:15

标签: ruby-on-rails mongodb mongoid

我有两个Mongoid文件:

class Book
  include Mongoid::Document
  embeds_many :pages
end

class Page
  include Mongoid::Document
  embedded_in :book
  field :reviewer, type: String
  field :done, type: Boolean
end

我创建了两个Book文档,其中嵌入了四个Page文档:

reviewers = %w(Alice Bob Charlie)

2.times do
  book = Book.new
  4.times do
    reviewer = reviewers.sample
    book.pages << Page.new(reviewer: reviewer, done: false)
  end
  book.save
end

请注意,评论者是从reviewers随机选择的。

我想为{Alice'一次审核的所有done文件设置true字段为Page。我该怎么办?

我写了以下代码:

Book.where('pages.reviewer' => 'Alice').set('pages.$.done' => true)

即使“Alice”审核了多个网页,此更新也会为每个Page文档更新一个Book文档。

我使用的是mongoid 4.0.0.alpha1。

0 个答案:

没有答案