2014-12-22 3 views
1

나는 복수 Order을 가진 Customer의 콜렉션을 가지고 있습니다. OrderCustomer 컬렉션에 포함 된 배열입니다. Order 내부에는 Product 컬렉션에 대해 @ReferencedMany이 있습니다.Doctrine2 및 MongoDB 문서에 포함 된 문서의 포함 된 배열의 임베디드 배열에 대한 쿼리

ProductCustomer이 구매 한 적이 있다는보고를하고 싶습니다.

이 고객의 모든 제품을 찾아이 쿼리에 필터를 추가하는 MongoDB 방법은 무엇입니까? 모든 주문을 반복 한 다음 모든 제품을 가져 와서 Doctrine ArrayCollection에 넣고 싶지는 않습니다.

이러한 제품을 직접 쿼리 할 수 ​​있습니까?

답변

1

Mongo DB는 단일 쿼리에서 자동으로 참조를 가져 오지 않습니다. 어쩌면 일부 드라이버가 이러한 기능을 지원하고 사용자에게 투명하게 하위 쿼리를 생성 할 수 있습니다.

map-reduce 패턴을 사용하여 보고서에 필요한 데이터를 하나의 컬렉션으로 집계하거나 제품 데이터를 고객에게 포함시킬 수 있습니다. 그러나 결과적으로 제품에 대한 쿼리는 더욱 복잡해질 것입니다.

고객 컬렉션의 보고서에 필요한 데이터를 비정규 화하고 일부 제품 데이터를 복제 할 수 있습니다. 그런 다음 해당 컬렉션의 동기화를 처리해야합니다. 같은 문제에서 작업

, 나는 결론에 도달 당신은 객체 사이의 관계 당신이 관계형 데이터베이스 :

를 사용해야을 반영하려는 경우
관련 문제