Низкий уровень AppEngine Query on Key + Ancestor

Эта задача AppEngine, кажется, должна быть тривиальной, но я не совсем выполнил ее. У меня есть некоторые данные в отношениях GrandParent/Parent/Child:

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

Я пытаюсь построить запрос, который соответствует всем дочерним элементам с ключами X. *. Ii. Другими словами, он вернул бы ключи XAii и XBii из вышеперечисленного и ничего больше. Я использую низкоуровневый механизм запросов, и то, что у меня пока есть, это:

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

Который возвращает пятерых детей. Если бы атрибут i / ii / iii был свойством, а не ключом, это было бы тривиально, но это ключ, и мне не ясно, как указать, что "ii" является критерием поиска.

1 ответ

Нет способа сделать это без отдельного свойства. Все фильтры в хранилище данных App Engine должны быть тестами на равенство или диапазон (которые эквивалентны тестам с префиксом строки); невозможно фильтровать так, как вы описываете, используя один фильтр.

Другие вопросы по тегам