2012-06-14 7 views
0

이 AppEngine 작업은 하찮은 작업 인 것처럼 보이지만 실제로 해결하지 못했습니다. 나는 이렇게 조부모/부모/자식 관계에있는 일부 데이터를 가지고 : 나는 키 X와 아이를 모두 일치하는 쿼리를 구축하기 위해 노력하고있어하위 레벨 AppEngine 키 + 상위 항목 쿼리

EntityName Key 
----------- ------- 
GrandParent W 
GrandParent X 
Parent  W.A 
Parent  X.A 
Parent  X.B 
Child  W.A.i 
Child  X.A.i 
Child  X.A.ii <=== matches X.*.ii 
Child  X.A.iii 
Child  X.B.i 
Child  X.B.ii <=== matches X.*.ii 

* II... 즉, 위에서 X.A.ii 및 X.B.ii 키를 반환하며 그 외에는 아무것도 반환하지 않습니다. 낮은 수준의 쿼리 메커니즘을 사용하고 있으며 지금까지 다음과 같습니다.

Entity gpX = new Entity("GrandParent","X"); 
Query q = new Query("Child"); 
q.setAncestor(gpX.getKey()); 

5 명의 자식을 반환합니다. i/ii/iii 속성이 속성이 아니라 키가 아닌 경우 사소한 것이지만 키이므로 'ii'를 검색 기준으로 지정하는 방법이 명확하지 않습니다.

답변

0

별도의 속성이 없으면이를 수행 할 방법이 없습니다. App Engine 데이터 저장소의 모든 필터는 등호 또는 범위 테스트 (문자열 접두어 테스트와 동일) 여야합니다. 단일 필터를 사용하여 설명하는 방식으로 필터링 할 수 없습니다.

+0

"ii"가 Child.Foo라는 속성에 q.setFilter ("Foo", "ii")를 사용하여 입력 한 경우이 작업을 수행 할 수 없습니까? 그 경우, 내 문제는 Child.Foo 대신 Child.Key를 필터 필드로 식별하는 것으로 나타납니다. – user939737

+0

예. 그래서 내 대답은 "별도의 속성없이이 작업을 수행 할 수있는 방법이 없습니다"라는 것부터 시작됩니다. 키 의사 속성은 필터링하려는 ID/이름뿐만 아니라 전체 키를 포함합니다. –

+0

확인. 나는 그것을 별도의 재산에 넣을 것이다, 고마워. – user939737

관련 문제