【问题标题】:Doctrine2 and MongoDB Query on embedded array of an embedded array of referenced documents in a DocumentDoctrine2 和 MongoDB 查询文档中引用文档的嵌入式数组的嵌入式数组
【发布时间】:2014-12-22 11:22:47
【问题描述】:
我有一个 Customer 集合,其中有多个 Order。
Order 是 Customer 集合中的嵌入式数组。
在Order 内部有一个@ReferencedMany 到Product 集合。
我现在想报告Customer 曾经购买过的每一个Product。
为该客户查找所有产品并在该查询中添加过滤器的 MongoDB 方法是什么。我不想循环每个订单然后获取所有产品并将它们放入 Doctrine ArrayCollection。
有没有直接查询这些产品的方法?
【问题讨论】:
标签:
php
mongodb
doctrine-orm
mongodb-query
【解决方案1】:
Mongo DB 不会在单个查询中自动获取引用。也许某些驱动程序支持此类功能,并且可能会生成对用户透明的子查询。
例如,您可以使用 map-reduce 模式将报告所需的数据聚合到一个集合中,或者将产品数据嵌入到客户中。但结果是对 Product 的查询将变得更加复杂。
您可以对数据进行反规范化并复制客户集合中报告所需的一些产品数据。然后你必须处理这些集合的同步。
处理同样的问题,我得出的结论是,如果你想反映对象之间的关系,你应该使用relational数据库:)