我有一个包含嵌入文档的 Mongoid 文档。我想搜索所有顶级文档,其中有一个具有多个条件的嵌入式文档。
TopDoc.where('inside.first_name' => 'Bob', 'inside.last_name' => 'Jones')
但在我看来,这与 Bob Wever 和 Paul Jones 的 TopDoc 相匹配,这是错误的。
我有一个包含嵌入文档的 Mongoid 文档。我想搜索所有顶级文档,其中有一个具有多个条件的嵌入式文档。
TopDoc.where('inside.first_name' => 'Bob', 'inside.last_name' => 'Jones')
但在我看来,这与 Bob Wever 和 Paul Jones 的 TopDoc 相匹配,这是错误的。
您需要使用$elemMatch。使用 Mongoid,以下行应该可以解决问题
TopDoc.elem_match(inside: { first_name: 'Bob', last_name: 'Jones' })
这相当于:
TopDoc.where(:inside.elem_match => { first_name: 'Bob', last_name: 'Jones'})