MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

вземете запис с поне един асоцииран обект

Вашият проблем е, че has_many на Mongoid не оставя нищо в родителския документ, така че няма заявки в родителския документ, които да направят нещо полезно за вас. Обаче belongs_to :user във вашата Task ще добави :user_id поле към tasks колекция. Това ви оставя с ужасяващи неща като това:

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

Разбира се, ако сте имали embeds_many :tasks вместо has_many :tasks тогава можете да направите заявка към :tasks вътре в users колекция, както искате. OTOH, това вероятно ще повреди други неща.

Ако трябва да запазите задачите отделно (т.е. да не са вградени), тогава можете да настроите брояч в User за да следите броя на задачите и тогава можете да кажете неща като:

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $set записва ли само полето или целия документ?

  2. Модулът не е намерен:Грешка:Не може да се разреши „dns“ при използване на MongoDB

  3. Как да прехвърлите променливата на средата към mongo скрипт

  4. APScheduler изпълнява асинхронна функция в Tornado Python

  5. Време е да живеете в mongodb, mongoose не работят. Документите не се изтриват