Mongoid – 通过引用文档查询

我有一个名为Ad的模型,如下所示:

class Ad include Mongoid::Document referenced_in :category end 

和类别模型:

 class Category include Mongoid::Document referenced_in :domain references_many :ads end 

如何按域选择广告? 我曾尝试使用Ad.where('category.domain_id' => domain.id)但这不起作用。

问题是MongoDB没有任何方法可以将Category记录映射到Ad记录。 它只知道Ad记录有一个category_id字段,因此'category.domain_id'将始终不返回任何内容。 查询中的点表示法仅适用于嵌入式文档,而不适用于引用(它们仍然是MongoDB中的二等公民)。

因此,要解决您的问题,您需要2个查询:

 category_ids = Category.where(:domain_id => domain.id).map(&:_id) Ad.where(:category_id.in => category_ids)