Реляционные запросы в монго - PullRequest
0 голосов
/ 24 сентября 2011

В моем приложении есть следующие модели, и я использую mongoid

Пользователь, учетная запись, офис и потенциальные клиенты. У пользователя много учетных записей, и учетная запись принадлежит пользователю. У учетной записи много офисов, а офис принадлежитк счету У офиса много лидов, а лид принадлежит офису

Теперь я хочу сделать запрос так, чтобы я хотел получить лидов, принадлежащих офисам счетов пользователя, например `

@accounts = Account.where(:user => user)

Теперь я хочу получить информацию об офисах, принадлежащих @accounts.Есть ли достойный способ сделать это?или я должен перебрать каждую учетную запись и получить офисы, принадлежащие этой учетной записи, а затем в конечном итоге найти потенциальных клиентов.

Я мог бы сохранить информацию об учетной записи в самих потенциальных клиентах, чтобы они содержали как учетную запись, так и служебную информациючто я могу запросить в один выстрел.Но так ли это? 1010

Предложения? 1012 *

1 Ответ

1 голос
/ 24 сентября 2011

Если это «содержит» отношения, рассмотрите встраивание, а не связывание. Например, если все выводы принадлежат одному офису, вы можете вставить их в них:

{office: "...", ведет: [{...}, {...}]}

Аналогичным образом офисы могут быть встроены в документ счета. И пр.

Однако, имеет ли вышесказанное смысл, зависит от операций, которые вы планируете выполнять (если полностью внедрить запрос, такой как «дай мне все выводы», если будет больше работы). Также существует максимальный размер документа 16 МБ.

Вероятно, уместна некоторая комбинация встраивания и связывания. При связывании вы должны делать это на стороне клиента, как вы упомянули. См. схему и , "достигающие объектов", страницы на mongodb.org.

...