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 ответов

Другие вопросы по тегам