MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

pobierz rekord z co najmniej jednym powiązanym obiektem

Twój problem polega na tym, że has_many firmy Mongoid nie pozostawia niczego w dokumencie nadrzędnym, więc nie ma żadnych zapytań w dokumencie nadrzędnym, które zrobią coś użytecznego dla Ciebie. Jednak belongs_to :user w Twoim Task doda :user_id pole do tasks kolekcja. To pozostawia cię z takimi przerażającymi rzeczami:

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

Oczywiście, jeśli masz embeds_many :tasks zamiast has_many :tasks wtedy możesz zapytać o :tasks wewnątrz users kolekcja, jak chcesz. OTOH, to prawdopodobnie zepsułoby inne rzeczy.

Jeśli chcesz zachować oddzielne zadania (tj. Nie osadzone), możesz ustawić licznik w User aby śledzić liczbę zadań, a następnie możesz powiedzieć takie rzeczy jak:

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak sprawdzić, czy dokument został wstawiony lub zaktualizowany podczas korzystania z findOneAndUpdate?

  2. MongoDB Projekcja poddokumentu

  3. grupuje według miesiąca i roku za pomocą mongoose.js

  4. mongoimport w docker-compose wyświetla błąd „Nie można uruchomić usługi”

  5. Czy mongodb automatycznie tworzy indeks w polu _id osadzonych dokumentów?