Mongoid:通过子文档过滤多个字段来嵌入集合

时间:2013-06-06 23:19:23

标签: ruby mongodb ruby-on-rails-3.2 mongoid moped

我是mogo和mongoid的初学者。 我可以通过子文件多个字段($ elemMatch)过滤子文档集合吗?我正在尝试为嵌入式集合制作参数化范围。

设置:

class Product
  include Mongoid::Document
  include Mongoid::Timestamps

  field :name, type: String, default: ''

  embeds_many :versions, class_name: self.name, validate: false, cyclic: true
  embeds_many :flags
end

class Flag
  include Mongoid::Document
  include Mongoid::Timestamps

  field :text, type: String
  field :state, type: Boolean
end

现在我想通过标记状态和名称来过滤单个产品中的版本:

Product.first.versions.where('$elemMatch' => {'flags.text' => 'normalized', 'flags.state' => true})不起作用。

要么不工作:

Product.first.versions.elem_match(flags: {text: 'normalized', state: true})
Product.first.versions.where(:flags.elem_match => {text: 'normalized', state: true})
Product.first.versions.where(flags: {'$elemMatch' => {text: 'normalized', state: true}})

有办法做到这一点吗?感谢。

0 个答案:

没有答案