ドキュメントが埋め込まれた Mongoid ドキュメントがあります。複数の基準を持つ埋め込みドキュメントがあるすべての最上位ドキュメントを検索したいと考えています。
TopDoc.where('inside.first_name' => 'Bob', 'inside.last_name' => 'Jones')
しかし、これは TopDoc で Bob Wever と Paul Jones と一致するように思えますが、これは間違っています。
ドキュメントが埋め込まれた Mongoid ドキュメントがあります。複数の基準を持つ埋め込みドキュメントがあるすべての最上位ドキュメントを検索したいと考えています。
TopDoc.where('inside.first_name' => 'Bob', 'inside.last_name' => 'Jones')
しかし、これは TopDoc で Bob Wever と Paul Jones と一致するように思えますが、これは間違っています。
$elemMatchを使用する必要があります。Mongoid では、次の行でうまくいくはずです。
TopDoc.elem_match(inside: { first_name: 'Bob', last_name: 'Jones' })
これは次と同等です:
TopDoc.where(:inside.elem_match => { first_name: 'Bob', last_name: 'Jones'})