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

få post med mindst ét ​​tilknyttet objekt

Dit problem er, at Mongoids has_many efterlader ikke noget i det overordnede dokument, så der er ingen forespørgsler på det overordnede dokument, der vil gøre noget nyttigt for dig. Dog belongs_to :user i din Task vil tilføje en :user_id feltet til tasks kollektion. Det efterlader dig med forfærdelige ting som dette:

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

Selvfølgelig, hvis du havde embeds_many :tasks i stedet for has_many :tasks så kan du forespørge på :tasks inde i users indsamling som du vil. OTOH, dette ville sandsynligvis ødelægge andre ting.

Hvis du har brug for at holde opgaverne adskilt (dvs. ikke indlejret), kan du konfigurere en tæller i User at holde styr på antallet af opgaver og så kunne man sige ting som:

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


  1. Mongodb:hvornår skal man kalde sureIndex?

  2. Dynamisk Linq-prædikat kaster ikke-understøttet filterfejl med C# MongoDB-driver

  3. Mongoose and new Schema:returnerer ReferenceError:Skema er ikke defineret

  4. Sådan sletter du mange dokumenter i en partitioneret samling i Azure CosmosDB ved hjælp af MongoDB API