запрос проекции ndb возвращает неправильное количество объектов - PullRequest
0 голосов
/ 25 августа 2018

Мой TwAccount равен

class TwAccount(ndb.Model):

   100 different properties here
   error = ndb.IntegerProperty(repeated=True)

Я пытаюсь:

twaccount_dbs = model.TwAccount.query().filter(ndb.GenericProperty('followuserfollowme') == True)

возвращает 1 сущность

Но я хочу запросить только 1 свойство.

twaccount_dbs = model.TwAccount.query().filter(ndb.GenericProperty('followuserfollowme') == True).fetch(projection=["error"])

затем возвращает 0 сущностей.

Я пытаюсь

twaccount_dbs = model.TwAccount.query().filter(ndb.GenericProperty('followuserfollowme') == True).fetch(projection=[model.TwAccount.error])

, но также возвращает 0 сущностей

Я ожидаю, что возвращает 1 сущность.

Обновление 1: я выясняю, что если ошибка - это emtpy (так что она не существует), то запрос проекции вернет 0

Моя цель - запросить все объекты в TwAccount.Если ошибка пуста, тогда выполните deferred.defer (function, entity_key).

Я хочу использовать проекционный запрос для экономии затрат на чтение.Разве это невозможно?

1 Ответ

0 голосов
/ 25 августа 2018

К сожалению, вы не можете отфильтровать результаты запроса по неустановленному / пустому свойству:

С Определение и структура индекса :

Сущность включается в индекс только в том случае, если для нее установлено индексированное значение для каждого свойства, используемого в индексе; если определение индекса относится для свойства, для которого объект не имеет значения, этот объект не будет появляются в индексе и, следовательно, никогда не будут возвращены в результате для любой запрос на основе индекса.

См. Также связанные AppEngine: хранилище данных запросов для записей со значением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...