And*_*sov 3 ruby ruby-on-rails mongodb mongoid
我有一个名为Ad的模型,如下所示:
class Ad
include Mongoid::Document
referenced_in :category
end
Run Code Online (Sandbox Code Playgroud)
和类别模型:
class Category
include Mongoid::Document
referenced_in :domain
references_many :ads
end
Run Code Online (Sandbox Code Playgroud)
如何按域选择广告?我试过用,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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2146 次 |
| 最近记录: |