2012-04-01 2 views
0

이것은 매우 단순해야하는 것처럼 보이지만 제대로 작동하지 않습니다. 하위 컬렉션에 하나 이상의 B 요소가있는 모든 문서 A를 선택하고 싶습니다.서브 콜렉션에있는 항목 수에 대한 몽고 쿼리

상점 문서에 직원 컬렉션이있는 것과 같습니다. 나는 그저 1 명 이상의 직원이있는 상점을 찾고 싶다.

{Store.Employees:{$size:{$ne:0}}} 

또는

{Store.Employees:{$size:{$gt:0}}} 

은 그냥이 동작하지 않습니다 :

내가 좋아하는 뭔가를 시도했다.

답변

0

이것은 지원되지 않습니다. 기본적으로 배열 크기가 이고 값이 인 문서 만 가져올 수 있습니다. 당신이 할 수없는 범위 검색.

사람들이 일반적으로하는 일은 배열 길이를 동일한 문서의 별도 필드에 캐시하는 것입니다. 그런 다음 해당 필드를 인덱싱하고 매우 효율적인 쿼리를 작성합니다.

물론 이것은 (너의 길이 필드를 최신으로 유지하는 것을 잊지 않고) 조금 더 많은 작업이 필요합니다.

+0

음 ... 그게 안됐다. 책에서 어딘가에 불려지거나 어쩌면 더 명확하게 소원을 빌었습니다. 그걸 알아 내려고 애쓰는 데 많은 시간을 썼다. – user1070663

+0

나는 그것이 어딘가에있다라고 생각한다 :) –