Mongodb (Mon goose) Дополнительная находка для каждого элемента, найденного предыдущим .find () в Mongodb. (Добавить свойство к первым найденным элементам) - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь достичь следующего, но прежде чем сделать это, я хочу убедиться, что оно работает.

У меня есть несколько коллекций, которые можно связать между собой. Художник может владеть альбомом, альбом может принадлежать артисту, лейбл может иметь исполнителя в своем списке, и артист может продвигаться лейблом. Так что есть двунаправленные ссылки.

Я подумал о следующей структуре. Художник, альбом и т.д. c. уже есть, теперь хочу сделать привязку.

Я НЕ хочу явно устанавливать в каждой сущности свойство для ссылки. Например, у исполнителя должно быть одно свойство, указывающее на альбом, еще одно, указывающее на лейбл, и так далее.

Я подумал о дополнительной коллекции, которая называется «Связь». Он всегда сохраняет значения from, to, fromType, toType. Благодаря этому я могу искать исходящие сообщения от объекта FROM к объекту TO и знать по типу, что запрашивать.

Это означает. Я хочу попросить исполнителя и показать связанные альбомы, лейблы, дизайнеров или что-то еще. Я НЕ хочу получать дополнительные запросы, так как я могу загрузить 20 из них и отобразить их в списке, и это удвоит запрос.

Что мне нужно сделать, так это: запросить разбитые на страницы списки художников , "заселить" любые ссылки, вернуть. Теперь у меня вопрос: как это сделать? Мне нужно сначала .find () исполнителей, затем перебрать их всех и .find () все ссылки, где artist._id совпадает с «from» в коллекции Linkage. Это результативный или есть лучшие способы?

Я действительно не хочу иметь прямую ссылку от одного объекта к другому, так как это становится довольно беспорядочным ... просто запрашиваю 20 художников, нажимая "ссылку" "массив для каждого объекта художника и возвращение его клиенту кажется наиболее простым. Клиент может отобразить все существующие ссылки. Бит .find (), each () и .find () снова кажутся немного беспорядочными.

Ура! :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...