Низкий уровень 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 должны быть тестами на равенство или диапазон (которые эквивалентны тестам с префиксом строки); невозможно фильтровать так, как вы описываете, используя один фильтр.