sql >> Databáze >  >> NoSQL >> MongoDB

získat záznam s alespoň jedním přidruženým objektem

Váš problém je, že Mongoid has_many nezanechává nic v nadřazeném dokumentu, takže v nadřazeném dokumentu nejsou žádné dotazy, které by pro vás mohly udělat něco užitečného. Nicméně belongs_to :user ve vašem Task přidá :user_id do tasks sbírka. Zůstanou vám tak strašné věci:

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

Samozřejmě, pokud jste měli embeds_many :tasks místo has_many :tasks pak se můžete zeptat na :tasks uvnitř users sbírejte, jak chcete. OTOH, tohle by pravděpodobně rozbilo jiné věci.

Pokud potřebujete ponechat úkoly oddělené (tj. ne vložené), můžete nastavit počítadlo v User sledovat počet úkolů a pak můžete říkat věci jako:

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


  1. Jak spravovat uživatele a ověřování v MongoDB

  2. Ukládání vnořených javascriptových objektů v redis - NodeJS

  3. MongoDB textové indexování sloupců objektů pole

  4. Jak bych mohl převést bajty na celý hex řetězec?