如何根据多个条件查找嵌入的Mongoid文档?

我有一个包含嵌入文档的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'})