Vấn đề của bạn là has_many
của Mongoid
không để lại bất kỳ thứ gì trong tài liệu mẹ nên không có truy vấn nào trên tài liệu mẹ sẽ làm bất cứ điều gì hữu ích cho bạn. Tuy nhiên, belongs_to :user
trong Task
của bạn sẽ thêm một :user_id
trường tasks
thu thập. Điều đó để lại cho bạn những điều khủng khiếp như thế này:
user_ids = Task.all.distinct(:user_id)
users = User.where(:id => user_ids).limit(10)
Tất nhiên, nếu bạn có embeds_many :tasks
thay vì has_many :tasks
thì bạn có thể truy vấn :tasks
bên trong users
bộ sưu tập như bạn muốn. OTOH, điều này có thể sẽ phá vỡ những thứ khác.
Nếu bạn cần giữ các tác vụ riêng biệt (tức là không được nhúng) thì bạn có thể thiết lập bộ đếm trong User
để theo dõi số lượng nhiệm vụ và sau đó bạn có thể nói những điều như:
User.where(:num_tasks.gt => 0).limit(10)