MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

ottenere record con almeno un oggetto associato

Il tuo problema è che has_many di Mongoid non lascia nulla nel documento principale, quindi non ci sono query sul documento principale che faranno qualcosa di utile per te. Tuttavia, il belongs_to :user nel tuo Task aggiungerà un :user_id campo alle tasks collezione. Questo ti lascia con cose orribili come questa:

user_ids = Task.all.distinct(:user_id)
users    = User.where(:id => user_ids).limit(10)

Ovviamente, se avessi embeds_many :tasks invece di has_many :tasks quindi potresti interrogare :tasks all'interno degli users raccolta come vuoi. OTOH, questo probabilmente romperebbe altre cose.

Se hai bisogno di mantenere le attività separate (cioè non incorporate), puoi impostare un contatore in User per tenere traccia del numero di attività e quindi potresti dire cose come:

User.where(:num_tasks.gt => 0).limit(10)