MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

obtenir un enregistrement avec au moins un objet associé

Votre problème est que has_many de Mongoid ne laisse rien dans le document parent, il n'y a donc aucune requête sur le document parent qui vous sera utile. Cependant, le belongs_to :user dans votre Task ajoutera un :user_id champ vers les tasks le recueil. Cela vous laisse avec des choses horribles comme ceci :

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

Bien sûr, si vous aviez embeds_many :tasks au lieu de has_many :tasks alors vous pouvez interroger le :tasks à l'intérieur des users collecte comme vous le souhaitez. OTOH, cela casserait probablement d'autres choses.

Si vous avez besoin de garder les tâches séparées (c'est-à-dire non intégrées), vous pouvez configurer un compteur dans User pour garder une trace du nombre de tâches, puis vous pourriez dire des choses comme :

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