Почему бесконечно растущие массивы это плохо?
а где там написано, что Монга будетискать сотню книг, пренадлежащих одному автору, из миллиарда
?
пример вообще об уменьшении избыточности
ну а ответ там же по ссылке
Тут все зависит от ситуации. На счёт производительности я так понял вы уже разобрались. БД не такие тупые, чтобы все 100 лямов записей перебирать в поиске нужной. Даже в этом случае, хранение в массиве вам никак бы не помогло, так как данные все равно пришлось бы вытягивать из другой коллекции. Только в этом случае выборка получилась бы гораздо сложнее и медленнее.
Чтобы ответить на свой вопрос, подумайте, как бы вы вытянули из БД книги издательства, в которых более 100 страниц, если бы хранили в массиве? Это первый момент.
Также иногда вам не нужны будут айдишники на клиенте. Придется усложнять запрос, чтобы исключить их для оптимизации.
Ещё к примеру, при подходе с массивом у вас может получиться так, что при удалении привязанного документа, ссылка на него останется в массиве, что нарушит целостность. Таким образом придется при удалении документа перебрать все массивы и удалить его айди, вот это уже будет довольно медленно, да и лишняя работа. Если юзать второй подход такой проблемы не будет.
В примере рассмотрена связь one to many, когда к примеру одно издательство имеет много книг, а книга только одно издательство. Но есть связь many to many. Например, рецепт имеет много ингридентов, а каждый ингридиент привязан ко многим рецептам. В этом случае в nosql как раз нужно использовать массив.
Так что все зависит от ситуации. Иногда даже лучше не делать отдельную коллекцию, а записывать документ целиком в массиве, как в первом примере из ссылки.