Какой принцип использовать для хранения данных в MongoDB?
Рекомендую почитать "50 Tips and Tricks for MongoDB". Текста не много, а информации полно. Здесь в ответах немного напутали - то, что у вас под 1ым пунктом - это денормализованная коллекция.  Плюсы в том, что за один запрос имеете всю информацию по обьекту, ну а минусы соответственно, что сложно применять правки. А 2ой пункт, это уже нормализованная - и тут всё наоборот. Но главное, это грамотно балансировать между ними, а не выбирать одну из сторон. Структура очень зависит не только от структуры данных, но и того - как мы используем эти данные (какие выборки делать будем) и на сколько важна их актуальность. Пару советов из разных сторон:
- если идете по первому пути - то можете хранить также все подсущности в отдельных коллекциях. Изменяя подсущность, изменяете её в своей коллекции, и не бойтесь писать скрипты для нормализации, которые по крону будут актуализировать основную коллекцию.
- а если по второму, то храните не только `_id` подсущностей, но также часть обьекта, которая всегда будет нужна, что бы минимизировать запросы.
В будущем потребуется хранить и редактировать огромные объёмы информации
На счет объемов, у вас наверняка для книг будут картинки (постеры), дак вот они могут занимать большую часть хранилища (+ большую часть расхода), я работал с одним книжным сайтом - на каждую книгу с отзывами (~4kb) есть несколько картинок (~120kb), т.е. ~97% (от книг) это картинки.