sql >> Database >  >> NoSQL >> MongoDB

record ophalen met ten minste één bijbehorend object

Uw probleem is dat de has_many van Mongoid laat niets achter in het bovenliggende document, dus er zijn geen vragen over het bovenliggende document die iets nuttigs voor u kunnen doen. Echter, de belongs_to :user in je Task zal een :user_id . toevoegen veld naar de tasks verzameling. Dat laat je achter met gruwelijke dingen als deze:

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

Natuurlijk, als je embeds_many :tasks had in plaats van has_many :tasks dan zou je de :tasks . kunnen opvragen binnen de users collectie zoals u dat wilt. OTOH, dit zou waarschijnlijk andere dingen kapot maken.

Als u de taken gescheiden moet houden (d.w.z. niet ingesloten), kunt u een teller instellen in User om het aantal taken bij te houden en dan zou je dingen kunnen zeggen als:

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


  1. Mongoid-sessie alleen-lezen maken

  2. push nieuwe waarde naar mongodb inner array - mongodb/php

  3. Meerdere items tegelijk invoegen in een MongoDB-verzameling

  4. Spring boot probeert verbinding te maken met mongo bij het toevoegen van mongo-java-driver maven-afhankelijkheid