私はモゴとモンゴイドの初心者です。サブサブドキュメントの複数のフィールド ($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}})
これを行う方法はありますか?ありがとう。