sql >> Databasteknik >  >> NoSQL >> MongoDB

få post med minst ett associerat objekt

Ditt problem är att Mongoids has_many lämnar inget i det överordnade dokumentet så det finns inga frågor om det överordnade dokumentet som kommer att göra något användbart för dig. Men belongs_to :user i din Task kommer att lägga till en :user_id fältet till tasks samling. Det lämnar dig med hemska saker som detta:

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

Naturligtvis, om du hade embeds_many :tasks istället för has_many :tasks sedan kan du fråga :tasks inuti users samling som du vill. OTOH, det här skulle förmodligen bryta andra saker.

Om du behöver hålla uppgifterna åtskilda (d.v.s. inte inbäddade) kan du ställa in en räknare i User för att hålla koll på antalet uppgifter och då kan man säga saker som:

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


  1. Analysera migrering till heroku/aws angående bilden

  2. Infogar data till MongoDB - inget fel, ingen infogning

  3. Vad är det korrekta sättet att göra en HAVING i en MongoDB GROUP BY?

  4. Misslyckades med global initiering:BadValue Ogiltigt eller ingen användarspråk inställd. Se till att miljövariablerna LANG och/eller LC_* är korrekt inställda