Как правильнее реализовать такую связь?

В MongoDB реализация связей между коллекциями осуществляется с помощью двух подходов: ссылки и встраивания.

1. Ссылки (референсы):
При использовании ссылок создается поле с идентификатором (ObjectId) для связанной коллекции. В этом поле хранится ссылка на документ в связанной коллекции.

Пример:
У вас есть коллекция "users" и коллекция "posts". В коллекции "posts" у каждого документа есть поле "authorId", которое содержит идентификатор пользователя из коллекции "users".

Достоинства:
- Гибкость: можно ссылаться на документы из любой коллекции.
- Целостность данных: если ссылка указывает на несуществующий документ, ее можно обработать.

Недостатки:
- Нужда в дополнительных запросах для получения связанных данных.
- Осложнение запросов, связанных с множественными ссылками.

2. Встраивание:
При использовании встраивания все необходимые данные вставляются в один документ, что обеспечивает прямую связь между данными.

Пример:
У вас есть коллекция "users" и коллекция "posts". В коллекции "users" есть поле "posts", которое содержит массив документов, представляющих посты пользователя.

Достоинства:
- Увеличение производительности, так как нет необходимости выполнять дополнительные запросы.
- Упрощение запросов, связанных с множественным встраиванием.

Недостатки:
- Ограничение по размеру документа (16 МБ).
- Дублирование данных при множественном использовании, что может привести к несогласованности данных.

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