У меня есть коллекция Customer
которые имеют несколько Order
,
Order
является встроенным массивом в Customer
коллекция.
Внутри одного Order
есть @ReferencedMany
к Product
коллекция.
Теперь я хочу сделать некоторые отчеты по каждому Product
это Customer
когда-либо купил.
Каков будет MongoDB способ найти все продукты для этого клиента и добавить фильтры по этому запросу. Я не хочу зацикливать каждый заказ, а затем извлекать все продукты и помещать их в коллекцию Doctrine ArrayCollection.
Есть ли прямой способ запроса этих продуктов?
Mongo DB не получает ссылки автоматически в одном запросе. Возможно, некоторые драйверы поддерживают такую функциональность и могут выдавать подзапросы, прозрачные для пользователя.
Вы можете объединить данные, требуемые для отчета, в одну коллекцию, например, с помощью шаблона map-Reduce, или встроить данные продукта в Customer. Но, как следствие, запросы на Product станут более сложными.
Вы можете отменить нормализацию данных и дублировать некоторые данные Продукта, необходимые для отчетов в коллекции клиентов. Тогда вам придется иметь дело с синхронизацией этих коллекций.
Работая над тем же вопросом, я пришел к выводу, что если вы хотите отразить связи между объектами, которые вы должны использовать реляционный база данных 🙂
Других решений пока нет …