Problem polega na tym, że MongoDB nie ma żadnego sposobu na mapowanie Category
rekord do Ad
nagrywać. Wie tylko, że Ad
rekord ma category_id
pole, więc 'category.domain_id'
zawsze nic nie zwróci. Notacja kropkowa wewnątrz zapytań działa tylko dla osadzonych dokumentów, a nie referencji (które wciąż są obywatelami drugiej kategorii w MongoDB).
Aby rozwiązać swój problem, potrzebujesz 2 zapytań:
category_ids = Category.where(:domain_id => domain.id).map(&:_id)
Ad.where(:category_id.in => category_ids)