MongoDB не поддерживает взаимосвязи внешних ключей на стороне сервера, нормализация также не рекомендуется.Если возможно, вы должны встроить свой дочерний объект в родительские объекты, это повысит производительность и сделает ненужными внешние ключи.Тем не менее, это не всегда возможно, поэтому существует специальная конструкция DBRef, которая позволяет ссылаться на объекты в другой коллекции.Тогда это может быть не так быстро, потому что БД должна делать дополнительные запросы для чтения объектов, но допускает ссылки на внешние ключи.
Тем не менее, вам придется обрабатывать ссылки вручную.Только при поиске вашего DBRef вы увидите, существует ли он, БД не будет просматривать все документы, чтобы найти ссылки и удалить их, если цель ссылки больше не существует.Но я думаю, что удаление всех ссылок после удаления книги потребовало бы одного запроса на коллекцию, не более, так что на самом деле это не так сложно.
Если ваша схема более сложная, то, вероятно, вам следует выбрать реляционную базу данных, а неnosql.
Существует также книга о проектировании баз данных MongoDB: Дизайн документов для MongoDB
ОБНОВЛЕНИЕ Книга, указанная выше, больше не доступна, но покаиз-за популярности MongoDB довольно много других.Я не буду связывать их все, так как такие ссылки могут измениться, простой поиск на Amazon показывает несколько страниц, поэтому их не должно быть проблемой.
См. Справочную страницу MongoDB для «Ручные ссылки» и DBRefs для получения дополнительной информации и примеров