MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Holen Sie sich einen Datensatz mit mindestens einem zugehörigen Objekt

Ihr Problem ist, dass Mongoids has_many hat hinterlässt nichts im übergeordneten Dokument, sodass es keine Abfragen im übergeordneten Dokument gibt, die für Sie nützlich sind. Der belongs_to :user jedoch in Ihrer Task fügt eine :user_id hinzu Feld zu den tasks Sammlung. Das lässt Sie mit schrecklichen Dingen wie diesen zurück:

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

Natürlich, wenn Sie embeds_many :tasks hätten statt has_many :tasks dann könnten Sie die :tasks abfragen innerhalb der users Sammlung, wie Sie möchten. OTOH, das würde wahrscheinlich andere Dinge kaputt machen.

Wenn Sie die Aufgaben getrennt (d. h. nicht eingebettet) halten müssen, können Sie einen Zähler in User einrichten um die Anzahl der Aufgaben im Auge zu behalten, und dann könnten Sie Dinge sagen wie:

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