Mongoid - запрос по указанному документу - PullRequest
3 голосов
/ 06 декабря 2010

У меня есть модель с именем 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), но это не работает.

1 Ответ

6 голосов
/ 06 декабря 2010

Проблема в том, что 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)
...