MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Schienen mongoide Kriterien finden nach Assoziation

Sie müssen bedenken, dass es in mongodb keine Joins gibt. In relationalen Datenbanken enthält includes bildet eine Join-Abfrage und Sie können Spalten aus beiden Tabellen in der Abfrage verwenden. Aufgrund des Fehlens von Joins in Mongodb ist dies jedoch nicht möglich.

In mongoid, includes spart nur ein paar DB-Aufrufe. Es ruft die zugehörigen Datensätze ab und speichert sie in der Identitätskarte zum schnellen Abrufen, aber während der Abfrage kann eine Abfrage immer noch nur eine Sammlung behandeln.

Wenn Sie Artikel benötigen, die auf Benutzernamen basieren, würde ich folgende Problemumgehung vorschlagen:

user_ids = User.where(username: 'erebus').only(:_id).map(&:_id)
articles = Article.where(:user_id.in => user_ids)