Запрос / GqlQuery .order () ограничивает набор результатов?

Я только что заметил странный результат запроса, который мне трудно понять. Похоже, что добавление order () к запросу ограничивает результаты, которые я получаю.

Вот мое взаимодействие:

>>> SomeModel.all().filter('action =', 'foo').order('created_at').count(),
    SomeModel.all().filter('action =', 'foo').count()
(192L, 293L)

>>> SomeModel.all().filter('action =', 'foo').order('created_at').count(),
    SomeModel.all().filter('action =', 'foo').count()
(193L, 294L)

Как видите, между двумя запросами не было добавлено сотни сущностей. Похоже, что инструкция order () ограничивает набор результатов. Но created_at является обязательным свойством и присутствует во всех сущностях.

>>> count = 0
>>> for entity in SomeModel.all().filter('action =', 'foo'):
...   if not entity.created_at:
...     raise Exception, 'Not found!'
...   count += 1
...
>>> print count
361

Без исключений. Так почему же запрос с ЗАКАЗОМ не возвращает все сущности?

Наконец, выясняем, являются ли данные плохими:

>>> print "ascending=%d no-filter=%d descending=%d" % (
      SomeModel.all().filter('action =', 'foo').order('created_at').count(),
      SomeModel.all().filter('action =', 'foo').count(),
      SomeModel.all().filter('action =', 'foo').order('-created_at').count())
ascending=79 no-filter=179 descending=173

person JasonSmith    schedule 07.11.2009    source источник
comment
Похоже, мне всегда не хватает 100 объектов, так что это может быть каким-то образом плохими данными. Я обновлю.   -  person JasonSmith    schedule 07.11.2009
comment
Если вместо count вы используете len (SomeModel.all (). Filter ('action =', 'foo'). Order ('created_at'). Fetch ()), вы все равно столкнетесь с той же проблемой? Если да, вы можете попытаться увидеть, какие объекты отбрасываются.   -  person Bemmu    schedule 10.11.2009


Ответы (1)


Проблема исчезла, несмотря на то, что я не изменил свой код. Лучшее, что у меня есть, это то, что, возможно, индекс отстал, хотя я предполагал, что если я получу успешный возврат от put (), то индексы будут обновлены.

person JasonSmith    schedule 11.11.2009